2016-04-25 14 views
0

Ich habe ein Topotrainer in Flash aus 50 Staaten gebaut. Für jeden Staat habe ich einen Rahmen gemacht. Der Code dieser 50 Frames sollte für alle gleich sein, während die Grafik verschoben werden soll. Wenn ich den Code auf den ersten der 50 Frames lege, funktioniert er nur dort. Wenn ich den Code bei jedem Frame anlege, bekomme ich viele Fehler, weil alle Funktionen doppelt vorhanden sind.So verwenden Sie ein einzelnes Skript für mehrere Frames

Gibt es eine Möglichkeit, dass alle 52 Frames denselben Code ausführen?

Vielen Dank für Ihre Zeit,

Weitere Informationen:

enter image description here

Das rote Quadrat der 50 Zustände anzeigt. Das ist rein grafisch. Ich habe eine separate Ebene für die Codierung erstellt. Der blaue Kreis zeigt den (Arbeits-) Code für einen einzelnen Status-Frame an. Alle 50 grafischen Frames möchten diesen Code verwenden. @Atriace: ist Ihre Erklärung, dieses spezielle Problem zu lösen?

Danke,

Justin

+0

Aktualisiert. Ich glaube, das sollte deine Frage beantworten. Beachten Sie auch, dass es nicht wichtig ist, ob die Frames (auf der Ebene mit dem Code) bis zum Ende der USMap vorhanden sind, sondern ob der Abspielkopf bereits aus dem Frame gelesen hat. Ich bin mir nicht sicher, was passieren würde, wenn Sie den Rahmen überspringen, aber ich vermute, dass es scheitern würde. – Atriace

Antwort

1

aktualisieren

Die wichtige Sache mit Frames bewusst zu sein, dass die Dinge nicht existieren erst, nachdem sie initialisiert sind. Nehmen wir an, dass wir auf das blaue Quadrat haben, und auf Frame2 haben wir den roten Kreis.

Example

Die Play-Kopf beginnt auf der linken Seite und bahnt sich seinen Weg nach rechts. Wenn es bei jedem Frame ankommt, erstellt es dann, was immer es dort findet, sei es ein Symbol oder ein Code. Das heißt, wenn wir versuchen, den roten Kreis mit einem Ereignis-Listener unter Frame1 zu verbinden, wird es fehlschlagen; Natürlich, weil der rote Kreis noch nicht erstellt wurde.

stop(); 

function hello(e:Event):void { 
    var destination:int = (currentFrame == 1) ? 2 : 1; 
    trace("Hello " + e.currentTarget.name + ": " + currentFrame + " of " + totalFrames + " > " + destination) 
    gotoAndStop(destination) 
} 

BlueSquare.addEventListener("click", hello); 
RedCircle.addEventListener("click", hello); // <<< this will fail 

Wenn wir jedoch setzen die einzige Zeile auf dem gleichen Rahmen wie wenn der rote Kreis erstellt wird, wird es richtig hello() verknüpfen und ausführen.

Example 2

+0

Hey Atriace, danke für deine schnelle Antwort! Ich habe meinen Beitrag bearbeitet, da ich nicht sicher bin, ob wir auf derselben Linie sind. Vielen Dank für Ihre Zeit! –

+0

PS: Entschuldigung für die unprofessionelle Bearbeitung. –

+0

Danke nochmal. Aber ich denke, das ist nicht mein Problem. Wenn ich den Code 50 mal kopiere, so dass jeder Rahmen den gleichen Code hat. Es gibt mir den Fehler, die gleiche Funktion mehrmals zu definieren. Weißt du, wie man das löst? –