Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-04-2011, 12:41   #16 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Servus
Wahrscheinlich nicht so Perfekt, wie die Geschichten von Herrn Kraft, funzt aber
Wenn klick fängt der geklickte Movie das spielen an, bei Frame 50 wird das Ding nach vorne geholt, und der vorherige wieder auf seine ursprünglichen Index gebracht.
PHP-Code:
import flash.display.MovieClip;
//
var mc_arr:Array = new Array(holder_mc.black_mc,holder_mc.green_mc,holder_mc.blue_mc,holder_mc.red_mc);
var 
id_arr:Array = new Array();
var 
controlMC:MovieClip = new MovieClip();
var 
currentMC:MovieClip;
var 
memoContainer:MovieClip;
//
for (var i:uint 0i<mc_arr.lengthi++)
{
    
id_arr.push (holder_mc.getChildIndex(MovieClip(mc_arr[i])));
    
MovieClip(mc_arr[i]).buttonMode true;
    
MovieClip(mc_arr[i]).addEventListener (MouseEvent.CLICKclickHandler);
}
//;
function clickHandler (evt:MouseEvent):void
{
    
MovieClip(evt.currentTarget).play ();
    
currentMC MovieClip(evt.currentTarget);
    
controlMC.addEventListener (Event.ENTER_FRAMEoEFHandler);
}
//;
function oEFHandler (evt:Event):void
{
    if (
currentMC.currentFrame >= 50)
    {
        if (
memoContainer != null)
        {
            
holder_mc.setChildIndex (memoContainerid_arr[mc_arr.indexOf(memoContainer)]);
        }
        
holder_mc.setChildIndex (currentMCMovieClip(holder_mc).numChildren-1);
        
controlMC.removeEventListener (Event.ENTER_FRAMEoEFHandler);
        
memoContainer currentMC;
    }

__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 26-04-2011, 12:54   #17 (permalink)
gelegenheitsflasher
 
Registriert seit: Jul 2001
Ort: zu hause
Beiträge: 68
Question

Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Beim Klick auf einen der Reiter wird die Funktion activiereReiter aufgerufen und sollte diesen reiter nach vorne bringen. Wenn Du keinen Effekt siehst, bau Dir mal ein trace in die Funktion und lass Dir so ausgeben, ob sie überhaupt aufgerufen wird und ob dort reiter belegt ist.
Danke.

Eigentlich will ich, dass nicht sofort beim daraufklicken etwas passiert, aber wenn es so geht wäre ich auch schon zufrieden. Hier kommt ein Fehler:

Code:
button_QA.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void
{
// Hier wird die Reiteranimation gestartet...	
(parent as MovieClip).play();

	parent.parent.activiereReiter();

}
"at Template_fla::Timeline_21/fl_MouseClickHandler()
ArgumentError: Error #1063: Nicht übereinstimmende Argumentzählung für Template_fla::Quartiere_7/activiereReiter(). 1 erwartet, 0 erhalten."


Ich geh mal davon aus dass ich die falsche Syntax benutze.
rHamsys ist offline   Mit Zitat antworten
Alt 26-04-2011, 13:03   #18 (permalink)
gelegenheitsflasher
 
Registriert seit: Jul 2001
Ort: zu hause
Beiträge: 68
Zitat:
Zitat von RustyCake Beitrag anzeigen
Servus
Wahrscheinlich nicht so Perfekt, wie die Geschichten von Herrn Kraft, funzt aber
Puh, da platzt mir ja gleich der Kopf... noch mehr Optionen... auf jeden Fall danke für den Code

Ich warte mal noch ab, ob ich den Code von Martin zum Laufen bekomme (das ist ja schon recht weit gediehen) und komme ggfls. auf dich zurück, einverstanden? Weil durchblicken, wo was hinmuss, tu bei deinem Code grad überhaupt nicht...
rHamsys ist offline   Mit Zitat antworten
Alt 26-04-2011, 13:28   #19 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Die Reiter sind also nicht gleichzeitig die Buttons?
Irgendwie durchblicke ich Deine Struktur noch nicht ganz. Skizziere mal, wie Deine Objekte verschachtelt sind und wo genau Dein Script liegt!

Zur Fehlermeldung: In AS3 muss man einer Funktion beim Aufruf immer genau soviele Parameter mitgeben, wie sie erwartet. Und da ich activiereReiter nunmal als Listener-Funktion angelegt habe, erwarte sie ein MouseEvent as Parameter.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist offline   Mit Zitat antworten
Alt 26-04-2011, 14:02   #20 (permalink)
gelegenheitsflasher
 
Registriert seit: Jul 2001
Ort: zu hause
Beiträge: 68
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Die Reiter sind also nicht gleichzeitig die Buttons?

Irgendwie durchblicke ich Deine Struktur noch nicht ganz. Skizziere mal, wie Deine Objekte verschachtelt sind und wo genau Dein Script liegt!
Die Reiter sind sozusagen Container für weitere Moviclips, die ich einzeln ändere und animiere:

Code:
Scene3/stage
	-pg_gui (MovieClip)
		-qa_mc (MovieClip)
			-qa_anim_mc (MovieClip)
				-button_QA (Schaltfläche)
				-inhalt_qa (Grafik)
				-button_objekt_a1 (~_a42) -> steuert einen anderen MC auf der Stage (Infofenster) (Schaltfläche)
				-reitername_qa (Textbox)
		-qb_mc (MovieClip)
		-qc_mc (MovieClip)
		-…
		-qg_mc

	-infofenster (MovieClip)
		-info1_mc (MovieClip)
			-info1_obj (MovieClip)
				-textfeld_1 (~_23)  (Textbox)
		-info2_mc
		-info3_mc
		-info4_mc
"pg_gui" ist ein MC mit 7 Reitern, "infofenster" ist ein MC mit 4 Reitern, die jeweils unabhängig voneinander geklickt werden sollen. Die Unter-Struktur für die anderen Reiter ist identisch mit der Beispielstruktur.

Wenn ich auf die SF "button_qa" klicke, soll das geschehen:
  • die Animation in "qa_anim_mc" wird abgespielt (play())
  • alle Reiter werden auf ihren Ausgangswert zurück gesetzt
  • bei Frame 2 der Animation soll der Reiter "nach vorne" kommen

Wenn ich auf "button_objekt_a1" (z.B.) klicke, soll:
  • das MC "infofenster" bei bestimmten Koordinaten positioniert und
  • der Inhalt der 23 Textfelder ausgetauscht werden.

Die Textfelder befinden sich in 4 verschiedenen Reitern in "infofenster".

So sieht das mal ganz "unambitioniert" aus... Meinst du ich kann das schaffen?

Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Zur Fehlermeldung: In AS3 muss man einer Funktion beim Aufruf immer genau soviele Parameter mitgeben, wie sie erwartet. Und da ich activiereReiter nunmal als Listener-Funktion angelegt habe, erwarte sie ein MouseEvent as Parameter.
Aha... spannend. Danke!
Du solltest Tutorials/Manuals schreiben, da verstehe ich wenigstens was :-)

edit:
Da meckert wieder was rum
Wenn ich das so aufrufe:

Code:
button_QA.addEventListener(MouseEvent.CLICK, activiereReiter);
kommt der Fehler:
ReferenceError: Error #1065: Variable activiereReiter ist nicht definiert.

Das ist ja was ich nicht verstehe, wie ich in einer Unterebene eine Funtkion aufrufe, die ich in einer übergeordneten Struktur geschrieben habe. Im gleichen Frame funktioniert das immer prima, und so sind alle Tutorials aufgebaut, aber sobald es komplexer wird steht man im Wald.

Wieso steht im Fehler was von "Variable", wo es doch eine Funktion ist??

Du hilfst mir toll, ich hoffe wir habens gleich

###############
2. edit:
Also jetzt bekomme ich die Funktion aufgerufen mit:

Code:
button_QA.addEventListener(MouseEvent.CLICK, parent.parent.activiereReiter);
und kann mir ein trace ausgeben lassen in der Funktion "activiereReiter".
Puh! das wäre geschafft. Allerdings ändert sich die Anordnung nicht. Es passiert rein gar nichts ...

Geändert von rHamsys (26-04-2011 um 14:19 Uhr)
rHamsys ist offline   Mit Zitat antworten
Alt 26-04-2011, 22:26   #21 (permalink)
gelegenheitsflasher
 
Registriert seit: Jul 2001
Ort: zu hause
Beiträge: 68
Smile

Soo, nach langer Fummelei hab ich nun endlich begriffen, was fürn Sch*** ein EventListener ist, wenn ich "nur mal eben" einen Event auslösen will.

Die Scripte haben von Anfang an funktioniert!

Dieser Listener hat mir nur permanent dieses eine MC nach vorne geholt - und ich bin schier verzweifelt. Also, es bleibt die Aufgabe alle MCs zu sortieren, damit es sauber aussieht, das werde ich morgen angehen. Ich hoffe, ich kann noch einmal auf euch zählen, wenn es in meinem Kopf schwächelt:

Vielen herzlichen Dank für die Hilfe bisher!
rHamsys ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
array, as3, instanzname, setchildindex, string

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Instanzname aus Array verwenden = Alptraum? xanku ActionScript 3 13 08-03-2011 19:38
Instanzname in Variable weiter verwenden rohweds ActionScript 3 1 14-05-2009 10:59
instanzname llcoola-02 Flash Einsteiger 2 16-07-2007 20:40
Arrayeintrag > Instanzname Vererbungsproblem axl.r Flash Einsteiger 5 21-09-2006 11:37
Ordner zählen, ArrayEintrag löschen... moneyman Flash und Datenbanken 4 03-03-2002 19:07


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:08 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele