2012-06-08 5 views
0

Classe de scène hava qui devrait recevoir un événement lorsqu'un élément est détecté mais que l'événement n'est pas déclenché ou ne sera pas reçu.AS 3.0 - Événement personnalisé non déclenché

public class Szene extends MovieClip { 

    private var items : Array; 


    public function Szene() { 


     this.addEventListener(ItemEvent.PICKED_UP, removeItem); 

    } 

    public function removeItem(index : int) 
    { 
     trace("remove"); 
     this.removeChild(items[index]); 
    } 

... 

} 

public class FigurControl extends MovieClip { 

    public function update(event : Event) 
    { 


     for(var j=0; j < items.length; j++) 
     { 
      if(this.hitTestObject(items[j])) 
      { 
       trace("dispatch"); 
       this.dispatchEvent(newItemEvent(ItemEvent.PICKED_UP,j)); 
      } 
     } 
... 


public class ItemEvent extends Event { 

    public static const PICKED_UP : String = "pickedUp"; 

    public var data : int; 

    public function ItemEvent(type : String, data : int, bubbles : Boolean=false, cancelable : Boolean=false) 
    { 
     super(type,bubbles,cancelable); 
     this.data = data; 
    } 

    override public function clone() : Event 
    { 
     return new ItemEvent(type,data,bubbles,cancelable); 
    } 
} 






     } 

je reçois la sortie "expédition", mais est jamais reçu dans la méthode "removeItem" :( ce qui est la raison ???

Répondre

1

Dans le constructeur, vous avez:

this.addEventListener(ItemEvent.PICKED_UP, removeItem); 

Vous avez l'objet Szene à l'écoute de lui-même - il devrait être à l'écoute de l'objet FigurControl à la place:

myFigurControl.addEventListener(ItemEvent.PICKED_UP, removeItem); 
+0

merci, ça marche :) –

Questions connexes