« Flash AS3 - Événements personnalisés » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
(Page créée avec « {{Ebauche}} {{Tutoriels Flash|CS3/CS4/CS5|Intermédiaire}} == Réalisation simplissime == La façon la plus simple de procéder est d'utiliser une chaîne de caractères... »)
 
Ligne 48 : Ligne 48 :
<source lang="actionscript">
<source lang="actionscript">
package {
package {
import flash.events.Event;
  import flash.events.Event;
public class MyEvent extends Event {
  public class MyEvent extends Event {
public static const FALSE_EV:String ="événement false in MyEvent class";
    public static const FALSE_EV:String ="événement false in MyEvent class";
public static const CORRECT_EV:String = "événement correct in MyEvent class";
    public static const CORRECT_EV:String = "événement correct in MyEvent class";
// class constructor
 
public function MyEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) {
    // class constructor
super(type, bubbles, cancelable);
    public function MyEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) {
}
      super(type, bubbles, cancelable);
    }
    // Créer une méathode clone() pour le cas où on voudrait redispatcher l'événement,
 
        // ca fonctionne sans, mais il semble que cela soit important pour le "bubbling" de l'événement.
    // Créer une méathode clone() pour le cas où on voudrait redispatcher l'événement,
    public override function clone():Event{
    // ca fonctionne sans, mais il semble que cela soit important pour le "bubbling" de l'événement.
        return new MyEvent(type, bubbles, cancelable);
   
    }
    public override function clone():Event{
}
      return new MyEvent(type, bubbles, cancelable);
    }
  }
}
}
</source>
</source>

Version du 16 décembre 2013 à 14:05

Cet article est une ébauche à compléter. Une ébauche est une entrée ayant un contenu (très) maigre et qui a donc besoin d'un auteur.

Réalisation simplissime

La façon la plus simple de procéder est d'utiliser une chaîne de caractères coder directement dans les fichiers

import flash.events.Event;

//event listener, à attacher à un objet, mais cet objet peut être "stage" ou "MovieClip(root)"
addEventListener("OK", eventHandler);

function eventHandler(e:Event):void {
  trace(e.type);
}
  
// Il suffit d'ajouter ce code là où on veut déclencher un événement :
dispatchEvent(new Event("OK", true, true));

On peut compliquer (un peu)les choses en définissant le type de l'événement (ici "OK") dans une constante (pour ne pas avoir a se souvenir à chaque fois quelle chaîne de caractère on avait utilisée.

import flash.events.Event;

const MY_EVENT = "OK";

addEventListener(MY_EVENT, eventHandler);

function eventHandler(e:Event):void {
  trace(e.type);
}
  
// Il suffit d'ajouter ce code là où on veut déclencher un événement :
dispatchEvent(new Event(MY_EVENT, true, true));

Dans les deux cas, il renvoi OK.

Réalisation un peu plus complexe

On se basera sur la connaissance de la création de classes présenté dans Flash AS3 - Programmer avec une classe.

Il s'agit ici de définir une classe "MyEvent" au dessus de la classe d'événement de base :

package {
  import flash.events.Event;
	
  public class MyEvent extends Event {
    public static const FALSE_EV:String ="événement false in MyEvent class";
    public static const CORRECT_EV:String = "événement correct in MyEvent class";

    // class constructor
    public function MyEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) {
      super(type, bubbles, cancelable);
    }

    // Créer une méathode clone() pour le cas où on voudrait redispatcher l'événement,
    // ca fonctionne sans, mais il semble que cela soit important pour le "bubbling" de l'événement.
    
    public override function clone():Event{
      return new MyEvent(type, bubbles, cancelable);
    }
  }
}

Ensuite, il vous suffit d'importer la classe MyEvent et de modifier un peu le code précédant

import MyEvent;
import flash.events.Event;

addEventListener(MyEvent.CORRECT_EV, eventHandler);
addEventListener(MyEvent.FALSE_EV, eventHandler);

function eventHandler(e:Event):void {
  trace(e.type);
}

dispatchEvent(new Event(MyEvent.CORRECT_EV, true, true));
dispatchEvent(new Event(MyEvent.FALSE_EV, true, true));

Références