Truque muito curto: addEventListener () AS3, um manipulador de eventos mais

No ActionScript 3.0 você deve usar addEventListener() para interceptar qualquer caso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/ **
* Dado um MovieClip mc, você define eventos e manipuladores
* /
( MouseEvent . CLICK , on_click ) ; . mc addEventListener ( MouseEvent CLICK, on_click.);
( MouseEvent . ROLL_OVER , on_roll_over ) ; . mc addEventListener ( MouseEvent ROLL_OVER, on_roll_over.);
( MouseEvent . ROLL_OUT , on_roll_out ) ; . mc addEventListener ( MouseEvent ROLL_OUT, on_roll_out.);
/ **
* Funções hander para os eventos acima
* /
e : MouseEvent ) : void { on_click function (e: MouseEvent ): void {
/ / Clique
}
e : MouseEvent ) : void { on_roll_over function (e: MouseEvent ): void {
/ / Roll over
}
e : MouseEvent ) : void { on_roll_out function (e: MouseEvent ): void {
/ / Roll-out
}

Alternativamente, você pode usar o formulário:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
( MouseEvent . CLICK , on_handler ) ; . mc addEventListener ( MouseEvent CLICK, on_handler.);
( MouseEvent . ROLL_OVER , on_handler ) ; . mc addEventListener ( MouseEvent ROLL_OVER, on_handler.);
( MouseEvent . ROLL_OUT , on_handler ) ; . mc addEventListener ( MouseEvent ROLL_OUT, on_handler.);
/ **
* Eu criar uma única função para lidar com todos os eventos
* /
e : MouseEvent ) : void { on_handler function (e: MouseEvent ): void {
e . type ) { switch (tipo and.) {
. CLICK : casas MouseEvent . CLICK:
/ / Clique
break;
. ROLL_OVER : casas MouseEvent . ROLL_OVER:
/ / Roll over
break;
. ROLL_OUT : casas MouseEvent ROLL_OUT.:
/ / Roll-out
break;
}
}

9 comentários: "Muito curto truque: addEventListener () AS3, um manipulador de eventos mais"

  1. 11 de janeiro de 2009 Os melhores posts da semana # 9 | EmaWebDesign:: Web Design / Programação Web :

    [...] Muito curto truque: addEventListener () AS3, um manipulador de eventos mais em Actionscript 3.0 você deve usar o addEventListener () para interceptar qualquer [...]

  2. 2 de dezembro de 2009 Roberto:

    Olá, eu gosto de como você melhorou, mas eu te perguntar uma coisa, se eu tivesse mais de um MovieClip mc, digite: mc1, mc2 ... .. (pode ser por exemplo os botões em um menu), como gerenciá-los Graças?

  3. 2 de dezembro de 2009 Giovambattista Fazioli :

    @ Robert:

    se eu tivesse mais de um MovieClip mc

    , in questo caso MouseEvent . Na função on_handler você pode se referir ao objeto do tipo Event , neste caso MouseEvent . Esse objeto, na verdade, permite que você tenha informações sobre o objeto que recebeu o evento. Se você tentar isso:

    1
    2
    3
    4
    e : MouseEvent ) : void { on_handler function (e: MouseEvent ): void {
    e . target . name ) ; trace (alvo and. nome.);
    / / ...
    }

    ) ti permetterà di sapere quale MovieClip hai selezionato. A propriedade target (ou currentTarget ) permitirá que você saiba que você selecionou MovieClip.
    che, anche se a prima vista sembrano del tutto identici, in alcuni casi (vedi bottoni complessi costruiti con più MovieClip annidati) possono darti la corretta informazione che cerchi. Consulte a documentação está no detalhe de target que currentTarget que, embora à primeira vista parecem ser bastante idêntico, em alguns casos (ver botões construído com mais complexo MovieClips aninhados) pode lhe dar as informações corretas você está procurando.

  4. 2 de dezembro de 2009 Roberto:

    @ Giovambattista Fazioli: Eu vou olhar ...:) ... bom ... se eu reenviar ..:)

  5. 2 de dezembro de 2009 Roberto:

    @ Giovambattista Fazioli:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ( MouseEvent . MOUSE_OVER , on_handler ) ; btn1_mc addEventListener (. MouseEvent MOUSE_OVER, on_handler.);
    ( MouseEvent . MOUSE_OUT , on_handler ) ; btn1_mc addEventListener (. MouseEvent MOUSE_OUT, on_handler.);

    e : MouseEvent ) { on_handler function (e: MouseEvent ) {
    e . type ) { switch (tipo and.) {
    . MOUSE_OVER : casas MouseEvent . MOUSE_OVER:
    e . currentTarget . name ) ; //funziona, visualizza "btn1_mc" ossia il nome dell'istanza del primo pulsante trace (currentTarget and. nome.) / / funciona, ele exibe "btn1_mc" ou o nome do primeiro botão
    ( 2 ) ; . btn1_mc gotoAndPlay (2);
    break;
    . MOUSE_OUT : casas MouseEvent MOUSE_OUT.:
    ( 16 ) ; . btn1_mc gotoAndPlay (16);
    break;
    }
    }

    Então

    1
    e . currentTarget . name ) trace (currentTarget and. nome.)

    funciona, mas como eu posso associar seqüência de educação que vem? em lugar de

    1
    ( 2 ) ; . btn1_mc gotoAndPlay (2);
  6. 2 de dezembro de 2009 Giovambattista Fazioli :

    @ Robert: É muito simples: e.target é um ponteiro para a instância do MovieClip, então é só usar:

    1
    . gotoAndPlay ( 2 ) ; .. e alvo gotoAndPlay (2);

    Na prática btn1_mc , ou qualquer outra instância, corresponde a e.target

  7. 2 de dezembro de 2009 Roberto:

    @ Giovambattista Fazioli: Bem o que dizer, eu tentei ser bom com totó
    [Cc_actionscript3] (e.currentTarget.name). GotoAndPlay (2) [\ como] ... tirado ... E assim o nome entre parênteses, e função ... por isso ... .. OBRIGADO ....:)

  8. 2 de dezembro de 2009 Roberto:

    @ Robert: Eu concluiria, se alguém tentou informações sobre o que, no caso com mais metros cúbicos (botões, por exemplo), com uma disposição e um clique você pode agrupar e atribuir diferentes mc "addEventListener" es :

    1
    2
    3
    4
    5
    var i : int = 0 ; i < btn_array . length ; i ++ ) { for (var i: int . = 0, i <tamanho btn_array; i + +) {
    . addEventListener ( MouseEvent . CLICK , on_handler ) ; btn_array [i] addEventListener (. MouseEvent CLICK, on_handler.);
    . addEventListener ( MouseEvent . MOUSE_OVER , on_handler ) ; btn_array [i] addEventListener (. MouseEvent MOUSE_OVER, on_handler.);
    . addEventListener ( MouseEvent . MOUSE_OUT , on_handler ) ; btn_array [i] addEventListener (. MouseEvent MOUSE_OUT, on_handler.);
    }

    Olá ... .. e espero ser útil a alguém ....:)

  9. 2 de dezembro de 2009 Giovambattista Fazioli :

    @ Roberto: excelente! Também, finalmente, se a série de "botões" (MovieClip) são colocados em um recipiente de MovieClip, você pode até mesmo evitar o array e um loop sobre todas as "crianças" do recipiente. Neste sentido, sugiro que você leia tudo que você sempre quis fazer com ActionScript 3
    Cumprimentos e obrigado por suas contribuições

Deixe um comentário

XHTML PERMIT TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CÓDIGO DE INSERÇÃO:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL