gotoAndPlay Problem - simpel !

spoofer

Mitglied
Hallo,

ich habe mir ein Tutorial mal angesehen, wo jemand per Button die Aktion:

Code:
on (release) {
	gotoAndPlay (86);
	
	_root.info.gotoAndPlay(130);

}

gegeben hat.

Ich dachte dieser Code würde bewirken, dass bei dem klicken auf den Button es am Punkt 86 losgeht und nachdem dort eine "stop-marke" eingesetzt ist er weiter auf Punkt 130 geht.

Ich brauche so etwas für einen Masken Effekt...also wenn man auf einen Menüpunkt klickt soll es weiß werden mit Masken...Bild 86-93 z.B ... aber danach immer woanders wieder anfangen.

Der Code oben funktioniert nämlich leider nicht so, wie ich möchte :(

Danke Gruß
Chris
 
spoofer hat gesagt.:
Ich dachte dieser Code würde bewirken, dass bei dem klicken auf den Button es am Punkt 86 losgeht und nachdem dort eine "stop-marke" eingesetzt ist er weiter auf Punkt 130 geht.
Das tut er nicht. Dieser Code würde die aktuelle Zeitleiste zu Frame 86 schicken und einen Movieclip namens info, der auf der Hauptzeitleiste liegt zu Frame 130. Beides gleichzeitig.

Generell kannst du nur Movieclips ansprechen, die im aktuellen Frame verfügbar sind.

Was genau du machen möchtest habe ich nicht verstanden aber generell - wenn du "weiter hinten liegende" Movieclips steuern möchtest, kannst du per Buttonklick den Zielframe in eine Variable schreiben
PHP:
 _root.ziel=130
und wenn der Movieclip anfängt diese auslesen
PHP:
_root.info.gotoAndPlay(_root.ziel)
Gruß
Rena
 
ich möchte nur, dass per klick auf einen Button z.B Frame 28 bis 42 abgespielt werden und danach Frame 50-53.

Ohne, dass die Frames hintereinander liegen müssen.

Geht das denn per ActionScript?



Code:
on (release) {
        gotoAndPlay (28) to (42);
        
}
and gotoAndPlay (50) to (53)

So meine ich das....!
 
In dieser Art geht das nicht.
Es sei denn das ganze ist statisch, dann bei Klick ein gotoAndPlay(28) und in Frame 42 ein gotoAndPlay(50) und in Frame 53 ein stop();
Aber ich nehm mal an, _das_ meinst du nicht.

Man könnte sich ein heftiges Variablenkonstrukt zusammenbauen in dem du deine abzuspielenden Frames z.B. in Arrays speicherst oder ähnliches - da ist dann aber nichts mehr mit "simpel".
Oder du erzählst mal mehr von deiner generellen Aufgabenstellung - vielleicht gibt's ja noch ganz andere Alternativen außer dem "Framegehopse". ;)

Gruß
Rena
 
hi spoofer,
ich hatte erst gestern exakt dasselbe Problem...;-)
ich bin allerdings Flash-Neuling und hab keine Ahnung ob das eine saubere Lösung ist oder nicht - es funktioniert jedenfalls, und das ist wohl auch das Wichtigste:
man braucht nur eine Variable, die beim Buttonklick mit einem bestimmten Wert belegt wird, und diese Variable fragt man einfach beim Bild, wo der Sprung erfolgen soll, noch einmal ab.

Du solltest allerdings der Instanz deines Buttons in der Szene über den Eigenschaften-Inspektor einen Namen geben. Also z.B. "joghurt_btn". Nur so kannst du den Button per action script in verschiedenen frames ansteuern. Dann ist es hilfreich, eine eigene Ebene namens "Aktionen" zu erstellen, auf der du die Aktionen für die einzelnen Frames speichern kannst.
Du willst also 28-42, danach 50-53 abspielen.
Was soll also passieren?
Bei Buttonklick (z.B. bei frame 1) soll zuerst 28-42 abgespielt werden. Markiere also auf der Ebene "Aktionen" das erste Bild und drücke F9 für das action script. Dort tippe ein:

var pressed:string; //Diese Zeile erstellt die Variable "pressed", die eine Zeichenkette als Wert annehmen kann
joghurt_btn.onRelease = function() { //Was soll passieren, wenn man den Joghurt-Button gedrückt hat?
pressed=joghurt; //Die Variable pressed soll den Wert "joghurt" annehmen!
gotoAndPlay(28); //Und der Film soll zu Bild 28 springen und abspielen!
};

Bei Bild 42 auf der Ebene "Aktionen" musst du jetzt ein Schlüsselbild einfügen, dieses markieren und für diesen frame folgenden code eintippen:
if (pressed == "joghurt") {
gotoAndPlay(50);
};

Beachte das doppelte Gleichheitszeichen für den Vergleich.

Der Vorteil bei dieser Methode ist, du kannst bei mehreren Buttons einfach je nach Klick die Variable einen anderen Wert annehmen lassen, und nachdem 28-42 abgespielt wurde mit einer Abfrage bei Bild 42 jeweils zu einer anderen Stelle springen lassen.

Hoffe ich war nicht zu ausführlich u. konnte helfen!
Gruß,
cluster
 
Hi,

geht auch mit einer onEnterFrame-Methode:
PHP:
on(release) {
    var gmode = 0;
    _root.gotoAndPlay(28);
    this.onEnterFrame = function() {
        if (gmode == 0) {
            if (_root._currentframe >= 42) {
                gmode = 1;
                _root.gotoAndPlay(50);
            }
        } else {
            if (_root._currentframe >= 53) {
                _root.stop();
                delete this.onEnterFrame;
            }
        }
    }
}

Gruß
.
 
Zuletzt bearbeitet:
Doch, geht. ... mir sind bloß statt zwei Klammern, versehentlich zwei Semikola rausgerutscht. ;) (das siehst Du übrigens daran, dass Flash Dir in der Vorschau einen Syntaxfehler ausgibt) Ich habe den Code im vorherigen Posting korrigiert.

Gruß

P.S.: Kann sein, dass Du die >= in > umwandeln musst, wenn Du willst, dass die jeweils letzten Bilder mit angezeigt werden.
.
 
Zuletzt bearbeitet:
Zurück