Antworten auf deine Fragen:
Neues Thema erstellen

Buttons in AS3 mit "gotoAndStop()" ansprechen?

Tease

wissensdurstig

Hallo zusammen,

bin gerade dabei zum ersten Mal etwas mit Flash zu erstellen und drehe langsam durch, weil ich scheinbar veraltete Tutorials befolge, die mit meinem Flash CS4 nicht umsetzbar sind.
Also, ich schildere am besten mal mein Problem. Ich möchte 'ne ganz einfache Website erstellen mit 4 Unterseiten. Dazu habe ich jede einzelne Seite auf eine extra Ebene gelegt (mit 5 Frames Länge), damit ich mit Hilfe meiner Buttons, die auf einer extra Ebene liegen, dann die einzelnen Seiten anspringen kann.
Damit der MC nicht gleich durch läuft, habe ich in der Aktionen-Ebene (auch extra im ersten Frame ein "stop();" geschrieben. Das funktiniert auch.
Nur jetzt wollte ich, wie in meinem Buch beschrieben das Script "on(release){
gotoAndStop(10);
}" schreiben, aber scheinbar kann man ja seit AS3 keinem Button mehr eine Aktion zuweisen. Fehlermeldung Flash: "An die aktuelle Auswahl können keine Aktionen angefügt sein."
Ich habe gelesen, dass man das alles generell in der Aktionen-Ebene löst, aber ich hab halt keinen Plan, wie ich das machen soll.
Kann mir hier bitte jemand weiterhelfen?
Sprich, wie spreche ich meine Buttons an, und wie lautet das Script, dass ich bei Release des Buttons zu Frame 10 springe und dort der MC aber angehalten wird?

Vielen Dank schon mal im voraus! ;)
 

sokie

Mod | Web

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Hallo Tease,
die wohl überwiegende Mehrzahl der Tutorials hier ist wohl für die Version AS2 geschrieben.Die lassen sich natürlich auch in CS4 nachvollziehen - du musst nur beimAnlegen der neuen Datei ein AS2 okument anlegen.

Natürlich hast du auch recht gelesen - tunlichst sollten AS codes in einer separaten actions Ebene geschrieben werden. Dazu muss das Symbol, das die Funktionalität bekommen soll einen Instanznamen haben, den du im Eigenschaftenfenster vergeben kannst. Dann kannst du das Symbol per Actionscript ansprechen:
Code:
meinSymbol.onRelease= function(){
  this.gotoAndStop(10);// würde das symbol selbst in frame 10 stoppen
  _root.gotoAndStop(10); //würde den "Hauptfilm" in Bild 10 stoppen
}
 
Zuletzt bearbeitet:
AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

für das reicht auch as2. button nen instanznamen geben und verlinken

my_btn.onRelease = function(){
gotoAndStop(10);
}

das script kommt nicht auf den button! sondern in ein extra frame
 
A

ad86

Guest

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Hi,

und in AS3 dann in etwa so:

Code:
mySymbol_btn.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(e:Event):void{
    gotoAndStop(10);
}

Mfg ad86
 

ssandner

Nicht mehr Newbie

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Hi,

und in AS3 dann in etwa so:

Code:
mySymbol_btn.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(e:Event):void{
    gotoAndStop(10);
}

Mfg ad86

Kleiner Verbesserunsgvorschlag:

Code:
mySymbol_btn.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(event:MouseEvent): //der auslösende Event ist ein MouseEvent
{
     this.movieclip_mc.gotoAndStop(10); // welcher MC soll auf Frame 10 springen
}
 
A

ad86

Guest

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Hi,

Kleiner Verbesserunsgvorschlag:
Code:
mySymbol_btn.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(event:MouseEvent): //der auslösende Event ist ein MouseEvent
{
     this.movieclip_mc.gotoAndStop(10); // welcher MC soll auf Frame 10 springen
}

also bei mir würde es auch ohne "this" funktionieren. :D Und zwecks movieclip: Es steht oben ja nicht, dass er einen MovieClip als extra Element benutzt. Er benutzt doch nur die Hauptzeitleiste mit 5 Frames, und will er zu einem dieser Frames in der Hauptzeitleiste springen reicht doch
Code:
gotoAndStop(10)
(Wenn er natürlich einen speziellen MC ansprechen will, kann er es ja machen, und dann ist Dein Script schon richtig)

Und wegen dem MouseEvent:
Code:
function clickHandler(event:MouseEvent):

Meine Sourcecode ist kürzer:p, und da Event die Oberklasse von MouseEvent ist, und man hier sehr wahrscheinlich sowieso nicht auf Methoden bzw. Eigenschaften der MouseEvent-Klasse zugreifen will, reicht doch :
Code:
function clickHandler(e:Event):

Zumal, wenn man den Sourcecode in eine eigene AS3-Datei auslagert, muss man dann alle Event-Klassen, die man benutzt, importieren. Mir reicht oft genug die Event-Klasse, da ich meist sowieso nur auf "e.target" zugreifen will. Oder benutzt Du bei der obrigen MouseEvent-Funktion irgendwelche speziellen Eigenschaften bzw. Methoden?

Mfg ad86
 

ssandner

Nicht mehr Newbie

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Natürlich funktioniert dein actionscript in diesem Beispiel. Was anderes wollte ich auch gar nicht behaupten. Ich arbeite seit einem Jahr mit Flash CS3/CS4 und bin direkt in as3 eingestiegen. Vieles von dem was ich mache, habe ich aus dem as3 programming pdf von adobe und diese Verfahrensweise habe ich übernommen.
Kürzerer Code hin und her, ich habe halt auch ein Faible für lesbaren und nachvollziehbaren Quelltext und ich denke mir gerade hier im Forum sollte man für Leute, die sich über as3 informieren wollen, ein bißchen die "Schulmeinung" vertreten.
Für mich ist
Code:
addEventListener(MouseEvent.CLICK, buttonClickHandler)
einfach nachvollziehbarer.
Ich finde as3 wird hier leider noch ziemlich stiefmütterlich behandelt.
Ich hoffe, wir können in Zukunft weiter über den besten Weg in as3 diskutieren.
P.S.:
Zumal, wenn man den Sourcecode in eine eigene AS3-Datei auslagert, muss man dann alle Event-Klassen, die man benutzt, importieren. Mir reicht oft genug die Event-Klasse, da ich meist sowieso nur auf "e.target" zugreifen will.
Nö:
Code:
import flash.events.*

Oder benutzt Du bei der obrigen MouseEvent-Funktion irgendwelche speziellen Eigenschaften bzw. Methoden?
Nein, nicht dass ich wüsste
 
A

ad86

Guest

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Hi,

Ich arbeite seit einem Jahr mit Flash CS3/CS4 und bin direkt in as3 eingestiegen. Vieles von dem was ich mache, habe ich aus dem as3 programming pdf von adobe und diese Verfahrensweise habe ich übernommen.

Willkommen im Club. Ich hab auch erst vor einem mit Flash und AS3 angefangen. Erst 3 Videotutorials von unserem Professor in Grundlagen interaktiver Medien, und den Rest im Internet oder in der Hilfe von Flash bzw. AS3 gefunden.

Für mich ist
Code:
addEventListener(MouseEvent.CLICK, buttonClickHandler)
einfach nachvollziehbarer.
Ist das wirklich nachvollziehbar? Welcher Button wurde denn gerade geklickt?;)
In diesem Fall nenne ICH meine Methoden so, dass Sie für mich Sinn machen. Z.B.
Code:
back_mc.addEventListener(MouseEvent.CLICK, gotoMenu)
(Mann kann natürlich auch "back_btn" benutzen, und oft sehe ich auch dass Sie gar keine Endung haben. ES gibt eben viele Möglichkeiten, wie man AS3-Script schreiben kann. So gibt es ja auch hier im Forum oft Scripte, da geht es (für mich) drunter und drüber. Variablendeklaration, addEventListener, dann die dazu gehörige Methode, dann die nächste Variablendeklaration, addEventListener, dann die dazu gehörige Methode, und so weiter. Man könnte ja auch alle Variablen am Anfang schreiben, dann Sie initialisieren, dann den Buttons (oder MovieClips) Ihre EventListener geben, und erst dann alle Methoden aufschreiben. Naja, so wie es jeder mag und gelernt (oder im Internet gefunden) hat.

Code:
import flash.events.*

Damit hast Du 39 Klassen importiert. Dabei hast Du ja z.B. nur Event, MouseEvent, KeyboardEvent und TimerEvent gebraucht. Dann importiert Du Dir ja eigentlich auch noch die Air-Klassen, die Du nur benutzen kannst, wenn Du eine Air-Applikation erstellst.

Wobei in dem Bezug, dass Du
Code:
function mouseClickHandler([COLOR="Red"]event:MouseEvent[/COLOR])
anstatt
Code:
function mouseClickHandler(e:Event)
überhaupt nichts falsch ist. Eben nur etwas länger.:p Aber da soll ja jeder seinen eigenen Weg gehen. Beide sind solange in Ordnung, so lange man nicht auf spezielle Eigenschaften der MouseEvent-Klasse zugreifen muss. Dann nämlich, wäre dein Script besser.

Mfg ad86
 

ssandner

Nicht mehr Newbie

AW: Buttons in AS3 mit "gotoAndStop()" ansprechen?

Ist das wirklich nachvollziehbar? Welcher Button wurde denn gerade geklickt?
In diesem Fall nenne Ich meine Methoden so, dass Sie für mich Sinn machen.

Na ja, da habe ich mich wohl ungenau ausgedrückt, natürlich steht vor dem EventListener der Name des Button bzw. Movieclips und natürlich benenne ich die Funktion mit einem aussagekräftigen Namen (es sei denn ich benutze sie für alle Button):

Code:
MyButton_btn.addEventListener(MouseEvent.CLICK, MyButtonClickHandler)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.068
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben