Domanda

Ho provato per tentativi ed errori tracciando le stringhe in modo da poter capire il flusso del programma di actionscript (o qualsiasi linguaggio simile in generale) ma senza alcun risultato;Non riuscivo a capirlo a questo punto o forse perché non ho fatto colazione.Per favore, spiegami perché le istruzioni trace sono mostrate prima nell'output?

Ecco il codice del primo Frame

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");

Secondo frame:

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

Ultimo frame:

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

E IL RISULTATO

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!!!

Quello che sto cercando di fare è attivare un evento quando lo stage è caricato;Genera alcuni URL di immagini e li inserisce in un array, quindi lo rintraccia.

È molto importante per me capire il flusso, non voglio andare avanti senza capirlo.Grazie.

È stato utile?

Soluzione

Beh, spero di poterlo analizzare abbastanza per te:

Il tuo programma si avvia, quindi esegue la riga 3 producendo l'output:

I'm in line 3!

Quindi si arriva alla sezione seguente:

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

La cosa importante da rilasciare qui è che il codice di cui sopra infatti non attiva nulla, invece registra un ascoltatore (una funzione che hai definito) da eseguire quando si verifica un determinato evento. Ad esempio, la prima riga stage.addEventListener (Event.ENTER_FRAME, generateURLs); allega un listener di eventi che si attiverà non appena viene inserito il primo fotogramma ed eseguirà i tuoi generateURL funzione.

Quindi il programma interpreta la riga 8 e la esegue:

I'm in line 8

Dopodiché definisci la funzione generateURLs seguita da un'altra traccia che restituisce:

I'm in line 24

Dopodiché definisci di nuovo alcune funzioni ( showBar , hideBar ) seguite da un'altra istruzione trace risultante in:

I'm in line 34

OK ora la cosa importante da rilasciare qui è che tutto ciò che hai fatto è stato registrare alcuni ascoltatori di eventi per ascoltare i tuoi eventi. Tuttavia, nessuno dei tuoi eventi è stato ancora attivato, motivo per cui non hai visto nessuna delle chiamate di traccia eseguire da nessuna delle tue funzioni. Tuttavia, poiché questa è l'ultima riga del fotogramma 1, il programma ora attiva l ' Event.ENTER_FRAME , che ti sei registrato per ascoltare e che a sua volta chiama la tua funzione generateURLs risultante nella Output di pokemon / img_XX.jpg .

Il resto si spiega da solo da qui se hai capito cosa ho detto finora.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top