Frage

Ich habe versucht, durch Verfolgen von Zeichenfolgen Versuch und Irrtum zu verfolgen, damit ich den Programmablauf von Actionscript (oder einer ähnlichen Sprache im Allgemeinen) verstehen konnte, aber ohne Erfolg.Ich konnte es zu diesem Zeitpunkt nicht verstehen oder vielleicht, weil ich mein Frühstück nicht gegessen habe.Bitte erklären Sie mir, warum die Trace-Anweisungen zuerst in der Ausgabe angezeigt wurden.

Hier ist der Code des ersten Frames

import flash.events.MouseEvent;
import flash.events.Event;

trace("I'm in line 3!");

stage.addEventListener(Event.ENTER_FRAME, generateURLs);
imageThumb.invButton.addEventListener(MouseEvent.MOUSE_OVER, showBar);
imageThumb.invButton.addEventListener(MouseEvent.MOUSE_OUT, hideBar);

trace("I'm in line 8");
// Generates the image URLs and inject them to the imageURLs array
var imageURLs:Array = new Array();
function generateURLs(e:Event):void {
    trace("I'm inside the generateURLs function!");
    var url:String = new String();
     for(var i:int = 0; i <= 31; i++) {
        url = new String('pokemon/img_' + i);
        imageURLs.push(url + ".jpg");
        trace(imageURLs[i]);
     }
     stage.removeEventListener(Event.ENTER_FRAME, generateURLs);
}


trace("I'm in line 24");

function showBar(evt:MouseEvent):void {
    trace("I'm inside the ShowBar function!");
    imageThumb.bar.gotoAndPlay('over');
}
function hideBar(evt:MouseEvent):void {
    trace("I'm inside the hideBar function!");
    imageThumb.bar.gotoAndPlay('out');
}

trace("I'm in line 34");

Zweiter Frame:

trace("We're not in Frame 1 anymore!");

Letzter Frame:

stop();
trace("STOP!!!");

UND DER AUSGANG

I'm in line 3!
I'm in line 8
I'm in line 24
I'm in line 34
I'm inside the generateURLs function!
pokemon/img_0.jpg
pokemon/img_1.jpg
pokemon/img_2.jpg
pokemon/img_3.jpg
pokemon/img_4.jpg
pokemon/img_5.jpg
pokemon/img_6.jpg
pokemon/img_7.jpg
pokemon/img_8.jpg
pokemon/img_9.jpg
pokemon/img_10.jpg
pokemon/img_11.jpg
pokemon/img_12.jpg
pokemon/img_13.jpg
pokemon/img_14.jpg
pokemon/img_15.jpg
pokemon/img_16.jpg
pokemon/img_17.jpg
pokemon/img_18.jpg
pokemon/img_19.jpg
pokemon/img_20.jpg
pokemon/img_21.jpg
pokemon/img_22.jpg
pokemon/img_23.jpg
pokemon/img_24.jpg
pokemon/img_25.jpg
pokemon/img_26.jpg
pokemon/img_27.jpg
pokemon/img_28.jpg
pokemon/img_29.jpg
pokemon/img_30.jpg
pokemon/img_31.jpg
We're not in Frame 1 anymore!
STOP!!!

Ich versuche, ein Ereignis auszulösen, wenn die Bühne geladen wird.Es generiert eine URL von Bildern, fügt sie in ein Array ein und verfolgt sie dann zurück.

Es ist sehr wichtig für mich, den Fluss zu verstehen. Ich möchte nicht vorwärts gehen, ohne dies zu verstehen.Vielen Dank.

War es hilfreich?

Lösung

Nun, ich hoffe, ich kann es für Sie genug aufschlüsseln:

Ihr Programm startet und führt dann Zeile 3 aus, um die Ausgabe zu erzeugen:

I'm in line 3!

Dann geht es zum folgenden Abschnitt:

stage.addEventListener(Event.ENTER_FRAME, generateURLs);
imageThumb.invButton.addEventListener(MouseEvent.MOUSE_OVER, showBar);
imageThumb.invButton.addEventListener(MouseEvent.MOUSE_OUT, hideBar);

Wichtig ist hier, dass der obige Code tatsächlich nichts auslöst, sondern einen Listener (eine von Ihnen definierte Funktion) registriert, der ausgeführt werden soll, wenn ein bestimmtes Ereignis eintritt. Beispielsweise wird in der ersten Zeile stage.addEventListener (Event.ENTER_FRAME, generateURLs) ein Ereignis-Listener angehängt, der ausgelöst wird, sobald der erste Frame eingegeben wird, und Ihre generateURLs ausführen Funktion.

Dann interpretiert das Programm Zeile 8 und führt sie aus:

I'm in line 8

Danach definieren Sie die Funktion generateURLs , gefolgt von einem weiteren Trace, der Folgendes ausgibt:

I'm in line 24

Danach definieren Sie erneut einige Funktionen ( showBar , hideBar ), gefolgt von einer weiteren Trace-Anweisung, die Folgendes ergibt:

I'm in line 34

OK, jetzt ist es wichtig, dass Sie nur einige Ereignis-Listener registrieren, um Ihre Ereignisse anzuhören. Es wurde jedoch noch keines Ihrer Ereignisse ausgelöst, weshalb Sie keinen der Trace-Aufrufe gesehen haben, die von einer Ihrer Funktionen ausgeführt wurden. Da dies jedoch die letzte Zeile in Frame 1 ist, löst das Programm jetzt das Event.ENTER_FRAME aus, das Sie zum Abhören registriert haben und das wiederum Ihre Funktion generateURLs aufruft pokemon / img_XX.jpg Ausgabe.

Der Rest ist von hier aus selbsterklärend, wenn Sie verstanden haben, was ich bisher gesagt habe.

Hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top