Flash:我完全误解了事件听力吗?

时间:2010-03-15 15:10:39

标签: flash actionscript-2

我不知道为什么但是我无法完成我的头部活动派遣。

以此为例。

someClass():Void{

    this.addEventListener("onChange",someObj);

}

我是否正确地假设这意味着someClass正在侦听onChange事件,当它获得它时,它将在someObj上触发onChange方法?

谢谢,Kohan。

附录:

lo = new Object();
lo.click = function(evt){
    trace(evt.target.label + " clicked");
}
button1.addEventListener("click", lo);

希望我在这个网站上找到http://www.webwasp.co.uk/tutorials/keywords/addEventListener.php

你可以看到我是如何得出这个假设的。 lo是一个对象,而不是一种方法,我是否正确?

3 个答案:

答案 0 :(得分:2)

你弄错了:

someClass():Void {
    this.addEventListener("onChange",someObj);
}

将为此onChange侦听器列表添加一个事件侦听器,当事件被触发时,将调用someObj 方法!

您需要将方法本身作为参数传递。所以,使用:

someClass():Void {
    this.addEventListener("onChange",someObj.someMethod);
}

* BTW,最好不要使用“onChange”字符串本身,而是使用保存这些字符串的常量(例如Event。ENTER_FRAME)。

答案 1 :(得分:0)

addEventListener的第二个参数是捕获该事件时将被调用的函数的函数名。

答案 2 :(得分:0)

我认为你误解了对象是什么,名称反映了语法的含义:

someMethod():Void {
     this.addEventListener("onChange",someOtherMethod);
}

someOtherMethod():Void {
     // something happens here when the "onChange" event is triggered
}

语法是this.addEventListener(事件名称被调用的函数);

obj = new Object();

obj.method = function(evt) {
     // something happened
}

otherObject.addEventListener("Event Name", this.obj);

otherObject.dispatchEvent("Event Name")

这就是语法的工作原理。但制作自己的活动有点复杂