嘿,我已经看了一些其他的帖子,但我仍然没有得到任何进展。
我有两个类,一个是Ticket_mc(),另一个是TicketPurchaserFSlider()。TicketPurchaserFSlider()中存储了一个名为ticketsSelected的数字,它包含我选择的票证数量。现在,我想要做的是能够从Ticket_mc()类中将该数字递增1。我的设置是创建一个dispatchEvent(新事件(“selectFromList”)),然后创建一个侦听器和一个连接到该侦听器的函数。不管怎样,它不起作用。下面是我的代码:
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);
}
}
}。
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,如果你也想看看的话。
发布于 2011-03-14 22:24:26
仅当鼠标事件侦听器的目标在显示列表中时才调用它们。您需要在展示列表中添加工单:
ticket = new Ticket_mc();
ticket.addEventListener("selectFromList",addTicket , false,0,true);
addChild(ticket);发布于 2011-03-15 00:01:31
在你的这个函数中添加一个跟踪:
public function clickTicket(event:MouseEvent){
dispatchEvent(new Event("selectFromList"));
gotoAndStop(2);
}让我们知道它是否会触发,即是否正在处理鼠标单击。然后我们就会更多地了解问题所在。
干杯,提莫
发布于 2011-03-15 16:44:19
是的,听起来你这里的实例有问题,你必须监听特定实例上的事件。一种解决方案可能是将Ticket_mc实例的数组传递给TicketPurchaserFSlider,这样就可以为每个实例添加事件侦听器。另一种可能是更好的方法是让Ticket_Batch监听点击,然后重新分派到TicketPurchaserFSlider。
https://stackoverflow.com/questions/5298550
复制相似问题