Pergunta

Eu tentei tentativa e erro rastreando strings para que pudesse entender o fluxo do programa do Actionscript (ou qualquer linguagem semelhante em geral), mas sem sucesso;Eu não conseguia entender neste momento ou talvez porque eu não tomei meu café da manhã.Explique por que as instruções de rastreamento foram mostradas na saída primeiro?

Aqui está o código do primeiro quadro

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

Segundo quadro:

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

Último quadro:

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

E A SAÍDA

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

O que estou tentando fazer é acionar um evento quando o palco é carregado;Ele gera alguns URLs de imagens e os injeta em uma matriz, em seguida, rastreia de volta.

É muito importante para mim entender o fluxo, não quero avançar sem entender isso.Obrigado.

Foi útil?

Solução

Bem, espero poder explicar o suficiente para você:

Seu programa inicia e, em seguida, executa a linha 3 , produzindo a saída:

I'm in line 3!

Em seguida, chega à seguinte seção:

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

O importante a ser liberado aqui é que o código acima na verdade não aciona nada, em vez disso, ele registra um ouvinte (alguma função que você definiu) para ser executado quando um determinado evento ocorrer. Por exemplo, a primeira linha stage.addEventListener (Event.ENTER_FRAME, generateURLs); anexa um listener de evento que será acionado assim que o primeiro frame for inserido e executará seus generateURLs função.

Então o programa interpreta a linha 8 e a executa:

I'm in line 8

Depois disso, você está definindo a função generateURLs seguida por outro rastreio que resulta:

I'm in line 24

Depois disso, você está definindo novamente algumas funções ( showBar , hideBar ) seguidas por outra instrução trace resultando em:

I'm in line 34

OK, agora o importante a liberar aqui é que tudo que você fez foi cadastrar alguns ouvintes de eventos para ouvir seus eventos. No entanto, nenhum de seus eventos foi disparado ainda, por isso você não viu nenhuma das chamadas de rastreamento serem executadas a partir de nenhuma de suas funções. No entanto, como esta é a última linha no Quadro 1, o programa agora dispara o Event.ENTER_FRAME , que você registrou para ouvir, que por sua vez chama sua função generateURLs , resultando no Saída pokemon / img_XX.jpg .

O resto é autoexplicativo a partir daqui, se você entendeu o que eu disse até agora.

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top