我有一个班级“商店”,我正试图派遣一个活动。以前,我已经完成了另一个班级“买家”,它可以工作,但同样的事情对我的新班级不起作用。
作为调度事件的商店类的功能:
public function Select(event:MouseEvent):void
{
trace(ShopName);
dispatchEvent( new SelectEvent(SelectEvent.SHOPSELECT,null,this));
}
我运行时的代码,通过trace
有效地显示“商店名称”,但它似乎没有派遣事件,否则,它被派遣但没有得到很好的回复。
回收Shop class调度事件的代码:
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类'没有。
两个类之间的唯一区别是CLICK
位于不同的对象上。单击时,Buyer类的对象将调度该事件,但单击时,Shop Class的movieclip将调度该事件。
我已经了解了事件的冒泡,我想我在代码中做得很好。我已经阅读了这里提出的类似问题,但我无法理解如何继续解决方案,因为答案对我来说并不清楚。
如何使其适用于商店类?
其他信息:
选择事件类:
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);
}
}
}