0

我有一个“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);
        }

    }

}
4

0 回答 0