2010-06-23 8 views
5

ho un listener di azione:Come posso definire un ActionScript gestore di eventi funzione inline in addEvent Listener

myText.addEventListener(TextEvent.LINK,linkClickHandler); 

quanto in base a questo, ho bisogno di scrivere un evento funzione di gestione separata per gestire l'evento link di testo.

Ora la mia richiesta è che ho bisogno di scrivere quella funzione nella stessa linea isntead di dare la sua name.ie, qualcosa come

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

posso fare come questo in AS3.What sarà la sintassi per questo se possibile.

Anche io voglio sapere, se posso passare un altro parametro extra al gestore di eventi diverso da evento che è il parametro predefinito.

+0

Ci scusiamo per il commento vago, ma una volta ho letto che c'era un bug con questo. Qualcuno può verificarlo? –

+2

A seconda del caso specifico, è necessario assicurarsi che la funzione dinamica non riceva la garbage collection prima di essere invocata. Di solito, è meglio registrare la funzione qualche volta. – Glenn

+0

il mio problema è che ho bisogno di passare un parametro al gestore di eventi mentre lo dichiaro nel listner di azione.Se sono in grado di farlo, posso definire il gestore da qualche altra parte anche. –

risposta

4

Il codice funzionerà. Basta avere un tipo di ritorno sulla funzione.

EDIT: Una semplice classe delegato:

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

posso passare un parametro aggiuntivo alla funzione mentre dichiaro in listener di azioni –

+2

Avrai bisogno di fare qualcosa come una classe Delegate: http://www.actionscript.org/resources/articles/205/1/The-Delegate- Classe/Page1.html. – Glenn

+0

Questa è un'ottima referenza. grazie compagno. Anche il codice ha funzionato in linea. Ora ho due buone opzioni. Cool –

Problemi correlati