由于缺乏知识,这是一个问题:
我有一个名为Main.as的文档类 在类构造函数中,我有以下监听器:
enter code here
var listeningFORModeChangeToStudent:Sprite = new Sprite;
listeningFORModeChangeToStudent.addEventListener(TellAllModeChangeToStudent.STUDENT,exp);
addChild(listeningFORModeChangeToStudent);
function exp(event:Event){
trace("exp");
}
在一个名为TellAllModeChangeToStudent的类中,我有一个调度程序:
enter code here
public class TellAllModeChangeToStudent extends EventDispatcher{
public static const STUDENT:String = "student";
public function TellAllModeChangeToStudent() {
}
public function tellAllModeChangeToStudent(){
dispatchEvent(new Event(STUDENT));
trace("event despatched");
}
}
}
在第三节课中,我打电话给上一节课中的调度员:
enter code here
var ThisTellAllModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent;
ThisTellAllModeChangeToStudent.tellAllModeChangeToStudent();
我在eveything中有跟踪语句,因此我知道正在调用TellAllModeChangeToStudent中的调度程序。
问题是main.as中的监听器没有调用函数exp。 我不明白为什么,我不知道如何检查听众是否真的看到了调度事件?
这是我第一次尝试使用as3 depatcher和listeners。 寻求帮助和指导。 最亲切的问候阿德里安。
答案 0 :(得分:1)
首先,你的Main.as类中的这一行,
var listeningFORModeChangeToStudent:Sprite = new Sprite;
应该说,
var listeningFORModeChangeToStudent:TellAllModeChangeToStudent = new TellAllModeChangeToStudent();
其次,TellAllModeChangeToStudent类应该扩展Sprite而不是EventDispatcher。
public class TellAllModeChangeToStudent extends Sprite
第三,你在Main类中创建了两个不同的TellAllModeChangeToStudent实例,在第三个类中创建了一个。您正在侦听其中一个事件,并从另一个事件中调度该事件。您需要将Main.as中的TellAllModeChangeToStudent实例的引用发送到第三个类,并从该实例调度该事件。