Actionscript die 2.te

TheEM

Mitglied
Hi!

ok, neues Problem :p

also..ich hab ein Button...
--------
on (release) {
Main.gotoAndPlay(3);
}
--------
beim loslassen des Buttons geh in Animation "main" zu Frame 3 und fang an abzuspielen.
toll. bei der Animation main is bei Frame 6 ein stop befehl, funktioniert einwand frei.
Nun will ich aber, das wenn man nochmal auf das Button klickt,
und ich Momentan auf Frame 6 bin sich das ganze nicht nochmal durchläuft, da ich ja schon auf dem Frame bin.
wie geht das ??
hab mir gedacht das man da mit "if" arbeiten muss...
bin aber nicht weitgekommen...
mein ansatz sah so aus :
----------
if.Main._currentframe(6)
Main.stop();
----------
funtzt net...
wie gehts richtig ??
 
super thx Geist :p
nur wenn ich das auf mein Button leg geht s nicht (muss innerhalb einer on-Prozedur vorliegen)
und auf meiner Ani die sich "Main" nennt gehts auch net :p
also worein ?

soll das mit in die On-funktion
on (release) {
Main.gotoAndPlay(3);
}
rein ??
habs probiert geht aber auch net, irgendwas mach ich falsch :(
#############
on (release) {
Main.gotoAndPlay(3);
Main.onRelease = function() {
if (this._currentframe != 6) {
this.gotoAndPlay(3);
}
}
}
############
so siehts aus wenn ich das in mein Button einbau...
sorry falls ich bissl nerv..aber sonst lern ich es ja nie :(
 
Zuletzt bearbeitet:
Kein Problem, sowas zählt nicht unter "Generve" oder ähnlichem. :)

Grundsätzlich gesagt treffen hier zwei theoretische Züge von Flash aufeinander: einerseits das Eventmodell von Flash <=5, andererseits das Eventmodell von Flash MX.

Die Variante, die du bisher eingesetzt hast, ist erstere und folgt im groben der Struktur:
PHP:
on (event) {
    mach das und das;
}
auf einem Objekt direkt als Objektaktion liegend.

Die Variante, welche das von mir gepostete Script einschließt, ist eben zweitere und ähnelt dem Aufbau von:
PHP:
instanzpfad.event = function() {
    mach das und das;
}
auf einer beliebigen Zeitleiste leigend als Frameaktion.

Die Flash5-Variante ist eine Variante gewesen, die auf statische EventHandler gebaut hat, welche für immer und ewig auf dem betreffenden Objekt lagen, also fix vorhanden waren; mit der neueren und zugleich auch mächtigeren Weise über dynamische EventHandler können die implementierten EventHandler-Funktionen jederzeit neu gesetzt, geändert oder gelöscht werden, wodurch weitaus mehr Echtzeit-Interaktivität im Film möglich ist.

Des weiteren wird einfach der gesamte Film übersichtlicher, was ActionScript betrifft, indem soviel wie möglich Anweisungen nun auf der Hauptzeitleiste liegen und nichtmehr verstreut im ganzen Film auf der jeweiligen Objektinstanz, auf die sie sich beziehen.

Die MX-Methode umfasst also folgende Eigenschaften:
  • EventHandler sind nichts weiter als fest benannte Eigenschaften eines jeden MCs, denen eine Funktion zugeordnet (implementiert) wird
  • EventHandler werden dynamisch gesetzt
  • werden auf einer beliebigen Zeitleiste gesetzt, referenzieren anschließend über die Pfadangabe zur MC-Instanz ausgehend von der jeweiligen Zeitleiste auf der das Script liegt
  • kann bequem beliebige Funktionen implementieren und damit auch EventHandler recht zügig wechseln
  • Funktionsanweisungen werden so interpretiert, als lägen sie direkt auf dem Objekt selbst, Pfade zu Instanzen, Eigenschadten und Methoden beginnen also beim Pfad der Instanz selber
Sorry, mehr krieg' ich gerade nicht zusammen, gehör' wohl grade eher in's Bettchen als hier in's Forum. ;)

Bei Fragen schonmal Fragen, ich antworte dan morgen soweit mir möglich darauf, die Erklärung kriegen wir in den Griff.
Script also erstmal auf die Hauptzeitleiste packen, dann dürfte es passen - was zur Theorie gehört, klären wir dann... :)

Geist
 
ok..soweit ich das verstanden hab muss ich das script also auf einen Frame der Zeitleiste legen....
In meiner ersten Szene hab ich 5 Ebenen, alle nur ein Frame.
(siehe Anhang)
wenn ich jetzt auf die Ebene "Main" dein script lege, wird frame 6 bei mehrfachen des Buttons immernoch mehrfach geladen.
Auf der Ebene Main befindet sich dann noch der MC (der passenderweise auch Main heisst)
mit insgesamt 26 Frames und auf 1,6,11,16,21,26 liegt der stop befehl ( weil darin dann der Inhalt liegt, die Frames dazwischen sind Animationen zum laden des textes, siehe 2.tes Bild...

und wohin muss jetzt das script ??
habs schon probiert in die Zeitleiste auf z.b. Frame 6 zu legen oder in Szene eins, geht aber alles nicht :(
 

Anhänge

  • waffenmodel.jpg
    waffenmodel.jpg
    21,4 KB · Aufrufe: 66
Also dein Script sollte wenn möglich einfach auf den ersten Frame deiner Szene.

Das Script wirkt dann, als ob es direkt auf dem Movieclip "Main" läge (nicht der Szene, denn die selbst stellt kein Objekt dar!) und bewirkt eigentlich nur, dass bei "Entklicken" des Objektes gecheckt wird, ob innerhalb des Objektes der Abspielkopf bei Frame 6 liegt - tut er das, dann wird die Anweisung gotoAndPlay(3) übergangen, tut er das nicht, so wird sie ausgeführt. :)

Theoretisch sollte also beim ersten Klick die Anweisung ausgeführt werden, da der Vergleich this._currentframe != 6 wahr ist, dann spielt der Abspielkopf ab Frame 3 von Main bis Frame 6 von Main, denn dort findet sich ja dein stop() - beim erneuten Klick ist der obige Vergleich jedoch unwahr und es findet kein erneutes Abspielen statt.

Sollte das wirklich nicht so vonstatten gehen, dann stell' bitte nochmal die *.fla bereit und man kann einen Blick drauf werfen, vielleicht steckt ja irgendwoanders der Teufel drin. :)

Gruß vom Geist
 
ok

dann mal hier die Komplette *.fla
und ich hab schonwieder keinen Fehler gefunden..naja...aber wenigstens lern ich langsam dazu ;p
dummerweise ist die Datei selbst gezippt mehr als 150 kb groß
also klickst du Hier
 
Zurück