_worldModel.dispatchEvent(new CustomEvent(CustomEvent.READY));
Vous devez instancier un CustomEvent, pas un Événement. Grande différence.
Vous pouvez également utiliser votre événement personnalisé pour transmettre des paramètres supplémentaires à l'événement expédié, ce qui se révélera incroyablement pratique si vous utilisez votre CustomEvent fortement
package com.b99.events
{
import flash.events.Event;
/**
* ...
* @author bosworth99
*/
public class AppEvents extends Event
{
public static const APP_READY :String = "application ready";
public static const XML_LOADED :String = "XML has loaded";
public static const CHANGE_COMPLETE :String = "state change complete";
public static const PAGE_ADDED :String = "page content added";
public static const PAGE_REMOVED :String = "page content removed";
public static const LIBRARY_LOADED :String = "external library loaded";
public static const IMAGE_LOADED :String = "external image loaded";
public static const LOAD_ERROR :String = "external load failed";
public var arg:*;
public function AppEvents(type:String, bubbles:Boolean = false, cancelable:Boolean = false, ...a:*)
{
super(type, bubbles, cancelable);
arg = a;
}
override public function clone():Event
{
return new AppEvents(type, bubbles, cancelable, arg);
}
}
}
Vous pouvez alors passer un certain nombre d'arguments le long de une fonction de réception:
this.dispatchEvent(new AppEvents(AppEvents.LIBRARY_LOADED, false , false, _name, _library, _names));
Et d'accéder à eux dans la fonction de réception sous la forme d'un tableau.
private function onLibraryLoad(e:AppEvents):void
{
_digestExternalLib.removeEventListener(AppEvents.LIBRARY_LOADED, onLibraryLoad);
var currentIndex:int = AppData.navLocations.indexOf(e.arg[0], 0);
AppData.libraries.push(e.arg[0]);
AppData.libraryCon.push(e.arg[1]);
AppData.libraryNames.push(e.arg[2]);
}
J'ai tiré ce d'un projet de fonctionnement ... mais vous devriez être en mesure de recueillir les bits importants ... Bonne chance!
grands merci qui semble vraiment utile en effet! Il s'avère que mon événement était déclenché avant que l'auditeur ne soit initié. un peu idiot vraiment. – davivid
Dans ce cas, il n'est pas nécessaire d'envoyer une instance de la classe CustomEvent. – Ohas
@Omer = vous avez totalement raison. Puisque le customEvent de l'OP n'ajoute aucune fonctionnalité supplémentaire, le const statique est tout ce qui est nécessaire (et pourrait être conservé n'importe où). Dans ce cas, cependant, la question était «comment implémenter des événements personnalisés» et non «comment utiliser des constantes statiques» ... – Bosworth99