主文档类中的监听器,用于自定义调度事件,来自另一个类不响应或调用函数

时间:2011-04-01 21:37:26

标签: flash actionscript-3

由于缺乏知识,这是一个问题:

我有一个名为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。 寻求帮助和指导。 最亲切的问候阿德里安。

1 个答案:

答案 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实例的引用发送到第三个类,并从该实例调度该事件。