2009-03-12 6 views
0

Je suis en train de traiter un FileReferenceList.fileList [] de plusieurs fichiers d'un utilisateur sélectionne dans le code suivant ..Flex - événement dispatch personnalisé à la réception d'événement standard

for (i=0;i < event.currentTarget.fileList.length; i ++){ 
fileByteData = new ByteArray(); 
fileByteData = (event.currentTarget.fileList[i].data as ByteArray);     
loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, checkImageDimensions); 
loader.loadBytes(fileByteData);      
} 

je dois-je passer en checkImageDimensions garder piste de quelle image est qui, je peux facilement créer un événement personnalisé, mais j'ai besoin de ce feu au bon moment. Idéalement, je pouvais faire quelque chose comme ça ..

var myEvent:CustomEvent = new CustomEvent(i); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.dispatchEvent(CustomEvent)) 

Mais pour être honnête, je ne suis pas sûr de la façon de procéder ...

Quelqu'un peut-il me aider? Merci!

Répondre

2

Vous devez créer une fonction d'écoute - un appel de fonction ne suffit pas. Le passage d'un nom de classe à dispatchEvent ne fonctionne pas non plus. Voici comment le faire. Notez que vous n'avez pas nécessairement besoin d'une classe d'événements personnalisée, si tout ce dont vous avez besoin dans l'événement est une chaîne de type. Vous pouvez simplement utiliser la classe d'événements dans ce cas:

public static const MY_CUSTOM_EVENT:String = "myCustomEvent";  
... 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void { 
    dispatchEvent(new Event(MY_CUSTOM_EVENT)); 
}); 

Modifier: Si vous êtes vraiment paresseux, mais que vous voulez quand même transmettre des valeurs à l'événement, vous pouvez utiliser la classe DinamicEvent:

var evt:DynamicEvent = new DynamicEvent(MY_CUSTOM_EVENT); 
evt.attr1 = val1; 
evt.attr2 = val2; 
dispatchEvent(evt); 

Bien sûr, il est plus propre et moins sujet aux erreurs de déclarer votre propre classe d'erreur.

+0

Je dois passer un nombre entier avec chaque événement différent, au cas où ils se déclencheraient dans un ordre différent. Je ne vois pas comment je peux le faire avec votre deuxième méthode? Merci pour l'indice si! – adam

Questions connexes