Creare eventi personalizzati in Actionscript 3.0

Creare eventi personalizzati in Actionscript 3.0 è semplicissimo. Usarli, poi, permette di utilizzare il metodo addEventListener() e rendere il nostro oggetto del tutto standard. Se abbiamo creato una classe, ad esempio Bottone, è corretto associare a questa uno o più eventi tramite una apposita classe (derivata dalla classe Event) BottoneEvent. Potremmo realizzare tutti gli eventi che interessano il funzionamento del nostro oggetto: il click, il mouse over, o un qualsiasi altro evento! Definendo anche delle nostre personali costanti. Lo scheletro – generico – di una classe evento personalizzata è:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package {
    /*
    ** @name            : BottoneEvent.as
    ** @description     : Classe derivata da Event per gestire un proprio evento personalizzato
    ** @author          : =undo=
    ** @web             : http://www.undolog.com
    ** @email           : g.fazioli@undolog.com
    */
   
    import flash.events.*;

    public class BottoneEvent extends Event {
       
        public static const MIOEVENTO:String       = 'pluto'; // codice qualsiasi, anche 'mioevento' in minuscolo
       
        public var Valore:Number                   = NaN;        
        /*
        ** @name            : BottoneEvent
        ** @description     : constructor
        */

        public function BottoneEvent ( type:String, v:Number, bubbles:Boolean=false, cancelable:Boolean=false ):void {
            super(type, bubbles, cancelable);
            this.Value = v;
        }
       
        /*
        ** @override
        */

        override public function clone():Event    {
            return new KnobEvent(this.type, this.Value, this.bubbles, this.cancelable);
        }
    }
}

Nella classe Bottone la situazione è ancora più semplice! Prendiamo ad esempio la porzione di codice che genera l’evento, all’interno della classe Bottone:

1
2
3
4
5
6
7
8
/*
** @name            : mioMetodo()
*/

public function mioMetodo():void {
    // succede qualcosa e dobbiamo generare un evento
    // passando anche un valore
    dispatchEvent( new BottoneEvent( BottoneEvent.MIOEVENTO, 1234 ) );
}

Lato applicativo, ovviamente, useremo la nostra classe Bottone come tutte le altre:

1
2
3
4
5
6
7
8
9
10
import Bottone;
import BottoneEvent;
//
var foo:Bottone = new Bottone();
foo.addEventListener( BottoneEvent.MIOEVENTO,
    function( e:BottoneEvent ):void {
        // do!
        trace( e.type + ' / ' + e.Value ); // 'pluto / 1234'
    }
);
  • Vito Lipari

    Ciao, utile il tuo esempio. Come faccio se il mio evento è il cambio di valore che assume una variabile???