2010-06-23 11 views
5

tengo un oyente de action:¿Cómo puedo definir una función de controlador de eventos en línea ActionScript en AddEvent Listener

myText.addEventListener(TextEvent.LINK,linkClickHandler); 

Como acuerdo con esto, tengo que escribir un evento función de controlador separado para controlar el evento enlace de texto.

Ahora mi requisito es que tengo que escribir que funcionan de la misma línea de isntead de dar su name.ie, algo así como

mytext.addEventListenet(TextEvent.LINK, 
       function(event:TextEvent) {....code comes here....}); 

puedo hacer como esto en AS3.What hará la sintaxis para esto si posible.

También quiero saber si puedo pasar un parámetro más al controlador de eventos que no sea el evento, que es el parámetro predeterminado.

+0

Lo siento por el comentario vago, pero una vez leí que había un error con esto. ¿Alguien puede verificar eso? –

+2

Dependiendo del caso específico, debe asegurarse de que su función dinámica no se recolecte basura antes de invocarse. Por lo general, es mejor que registres la función en alguna parte. – Glenn

+0

mi probelma es que necesito pasar un parámetro al controlador de eventos mientras lo declaro en action listner.Si soy capaz de hacerlo, puedo definir el controlador en otro lugar también. –

Respuesta

4

Tu código funcionará. Solo necesito un tipo de devolución en la función.

EDIT: Una clase delegada simple:

public class Delegate 
{ 

    public var cb:Function; 
    public var args:Array; 

    public function Delegate(cb:Function, ...args) 
    { 
     this.cb = cb; 
     this.args = args; 
    } 

    public static function create(cb:Function, ...args):Function { 
     var functionProxy:Delegate = new Delegate(cb, args); 
     return functionProxy._create; 
    } 

    public function _create(e:Object=null):void { 
     var params:Array = new Array(); 
     if(e) { 
      params.push(e); 
     } 

     for each (var o:Object in args[0]) { 
      params.push(o); 
     } 
     cb.apply(null, params); 
    } 

} 
+0

puedo pasar un parámetro adicional a la función mientras declaro en el detector de acciones –

+2

Tendrá que hacer algo como una clase de delegado: http://www.actionscript.org/resources/articles/205/1/The-Delegate- Clase/Página1.html. – Glenn

+0

Esa es una gran referencia. gracias amigo. También el código trabajó en línea también. Ahora tengo dos buenas opciones. Enfriar –

Cuestiones relacionadas