我有一个“Shop”类,我试图通过它发送一个事件。以前,我已经完成了另一个课程“买家”并且它有效,但同样的事情不适用于我的新课程。
发送事件的 Shop 类的功能:
public function Select(event:MouseEvent):void
{
trace(ShopName);
dispatchEvent( new SelectEvent(SelectEvent.SHOPSELECT,null,this));
}
我运行它时的代码,通过有效地显示“商店名称”,trace
但它似乎没有分派事件,否则,它被分派但没有很好地接收。
接收 Shop 类调度事件的代码:
addEventListener(SelectEvent.SHOPSELECT,shopselected,true);
买方类的功能,相同的方法起作用:
public function Select(event:MouseEvent):void
{
trace(buyerCode);
if(y>=377|| enteredmall)
{
dispatchEvent( new SelectEvent(SelectEvent.BUYERSELECT,this,null));
}
}
买方类调度事件的接收代码:
addEventListener(SelectEvent.BUYERSELECT,showselectbuyer,true);
这行得通,但 Shop class' 没有。
这两个类之间的唯一区别是它CLICK
位于不同的对象上。点击时,Buyer 类的对象会调度事件,但点击时 Shop 类的影片剪辑会调度事件。
我已经了解了事件的冒泡,我认为我在代码中做对了。我已经阅读了此处提出的类似问题,但我不明白如何继续解决问题,因为我不清楚答案。
如何使它也适用于商店课程?
附加信息:
选择事件类别:
package
{
import flash.events.Event;
import flash.utils.getQualifiedClassName;
public class SelectEvent extends Event
{
public static const BUYERSELECT:String = "buyerselect";
public static const SHOPSELECT:String = "shopselect";
public var selectedbuyer:Buyer;
public var selectedshop:Shop;
public function SelectEvent(type:String, selectedbuyer:Buyer=null, selectedshop:Shop=null, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type,bubbles,cancelable);
if(selectedshop==null)
{
this.selectedbuyer= selectedbuyer;
}
else
{
this.selectedshop= selectedshop;
}
}
override public function clone():Event
{
return new SelectEvent (type, selectedbuyer, selectedshop ,bubbles, cancelable);
}
}
}