首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监听程序未监听AS3 DispatchedEvent

监听程序未监听AS3 DispatchedEvent
EN

Stack Overflow用户
提问于 2011-03-14 20:25:11
回答 4查看 322关注 0票数 0

嘿,我已经看了一些其他的帖子,但我仍然没有得到任何进展。

我有两个类,一个是Ticket_mc(),另一个是TicketPurchaserFSlider()。TicketPurchaserFSlider()中存储了一个名为ticketsSelected的数字,它包含我选择的票证数量。现在,我想要做的是能够从Ticket_mc()类中将该数字递增1。我的设置是创建一个dispatchEvent(新事件(“selectFromList”)),然后创建一个侦听器和一个连接到该侦听器的函数。不管怎样,它不起作用。下面是我的代码:

代码语言:javascript
复制
    package com.spay.ticketpurchaser {

    import com.spay.ticketpurchaser.TicketPurchaserFSlider;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.events.EventDispatcher;


    public class Ticket_mc extends MovieClip{
        public function Ticket_mc(){
            addEventListener(MouseEvent.CLICK, clickTicket);
        }

        public function clickTicket(event:MouseEvent){
            dispatchEvent(new Event("selectFromList"));
            gotoAndStop(2);
        }
    }
}

代码语言:javascript
复制
    package com.spay.ticketpurchaser{

    import com.spay.ticketpurchaser.Ticket_mc;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.text.TextField;    

    public class TicketPurchaserFSlider extends MovieClip{

        public var ticketsSelected:Number = 0;
        private var ticket:Ticket_mc;

        public function TicketPurchaserFSlider(){           
            ticket = new Ticket_mc();
            ticket.addEventListener("selectFromList",addTicket , false,0,true);
            }

        private function addTicket(event:Event){
            ticket.removeEventListener("selectFromList", addTicket);
            ticketsSelected ++;
            trace("it works");
        }
   }
}

为了澄清,这里是场景

我有一个保存ticketsSelected变量的ticketPurchaserFSlider类。我在TicketPurchaserFSlider类中还有其他方法可以递增和递减ticketsSelected变量,一切都很正常,然后我使用document类来执行addChild(ticketPurchaser)等操作。

然后我需要票证,而且这些票证还需要是可单击的,并且还需要递增和递减ticketPurchaserFSlider类中的ticketsSelected变量。为了显示票证,我首先创建了Ticket_mc并将其导出以用于操作display。然后我创建了一个空的数组,并给它一个名为Ticket_Group的类,这个类包含一个数组,这个数组创建了6个票证实例。然后我创建了另一个空的电影剪辑,并创建了另一个类并将其命名为Ticket_Batch,它还保存了一个数组并创建了更多的票证实例(以6的倍数)它创建的票证数量存储在ticketPurchaserFSlider类中,名为maxTickets。我通过使用ticketPurchaserFSlider的实例和。语法( ticketPurchaser.maxTickets)然后我在Document类中使用Ticket_Batch类的一个实例来addChild(票证),因此我可以从document类中显示我的所有票证。

现在,我不确定这是否是显示票证的最佳方式,但它对我来说是合理的,票证将被单独选择,并且可以通过6的倍数进行选择(使用分离按钮),在这两种情况下,我都需要能够访问ticketPurchaserFSlider类中的ticketsSelected变量。

它可以从clickTicket函数正常启动。

我希望这已经把事情搞清楚了。如果你认为我需要一种更好的方式来设置我的课程,那就直说吧。

我已经在这里发布了这些文件: www.samuelpay.com/BingoClient.zip,如果你也想看看的话。

EN

回答 4

Stack Overflow用户

发布于 2011-03-14 22:24:26

仅当鼠标事件侦听器的目标在显示列表中时才调用它们。您需要在展示列表中添加工单:

代码语言:javascript
复制
ticket = new Ticket_mc();
ticket.addEventListener("selectFromList",addTicket , false,0,true);
addChild(ticket);
票数 0
EN

Stack Overflow用户

发布于 2011-03-15 00:01:31

在你的这个函数中添加一个跟踪:

代码语言:javascript
复制
public function clickTicket(event:MouseEvent){
    dispatchEvent(new Event("selectFromList"));
    gotoAndStop(2);
}

让我们知道它是否会触发,即是否正在处理鼠标单击。然后我们就会更多地了解问题所在。

干杯,提莫

票数 0
EN

Stack Overflow用户

发布于 2011-03-15 16:44:19

是的,听起来你这里的实例有问题,你必须监听特定实例上的事件。一种解决方案可能是将Ticket_mc实例的数组传递给TicketPurchaserFSlider,这样就可以为每个实例添加事件侦听器。另一种可能是更好的方法是让Ticket_Batch监听点击,然后重新分派到TicketPurchaserFSlider。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5298550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档