2012-06-08 70 views
0

我有一个场景类,应该在物品被拿起时接收事件,但事件没有被触发或不会被接收。AS 3.0 - 自定义事件没有被解雇

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); 
    } 
} 






     } 

我得到的输出 “调度”,但从未在该方法为 “removeItem” :( 什么???原因

回答

1

在构造函数中,您收到:

this.addEventListener(ItemEvent.PICKED_UP, removeItem); 

您有Szene对象正在倾听自己 - 它应该倾听相应的FigurControl对象:

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

谢谢,它的工作:) –