我在尝试向舞台上的Button类添加一个事件监听器时收到错误。
1061:通过带有静态类型Class的引用调用可能未定义的方法addEventListener。
在我的舞台上,我有一个实例名称为stopBtn的Button,它也被导出到名为classes.stopBtn的actionscript类(名为'classes'的文件夹中的stopBtn.as)。该按钮位于主时间轴的第一个关键帧上,位于该层上具有其他按钮的图层
错误发生在stopBtn.as文件的第10行:
package classes {
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class stopBtn extends SimpleButton {
public function stopBtn() {
stopBtn.addEventListener(MouseEvent.CLICK, stopButtonFunction);
}
function stopButtonFunction(event:MouseEvent):void {
MovieClip(root).trackPosition = 0;
MovieClip(root).mySoundChannel.stop();
MovieClip(root).playPause.gotoAndPlay(2);
}
}
}
我找到了错误代码1061的许多线程,但它们似乎与我的问题无关!
我尝试使用
确保导入所有事件类型Import flash.events.*; but this makes no difference.
答案 0 :(得分:3)
这个应该很明显。您正在尝试向类中添加事件侦听器,而不是对象。
stopBtn.addEventListener(MouseEvent.CLICK, stopButtonFunction);
stopBtn
是您创建的类的名称。要将事件侦听器添加到实例,请将代码修改为
this.addEventListener(MouseEvent.CLICK, stopButtonFunction);
这将确保您将事件监听器添加到按钮对象,而不是像您尝试的那样添加类(正如您所见,这是不允许的,因为它没有任何意义)
答案 1 :(得分:1)
您的代码应该像
package classes {
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class stopBtn extends SimpleButton {
public function stopBtn() {
addEventListener(MouseEvent.CLICK, stopButtonFunction);
}
function stopButtonFunction(event:MouseEvent):void {
MovieClip(root).trackPosition = 0;
MovieClip(root).mySoundChannel.stop();
MovieClip(root).playPause.gotoAndPlay(2);
}
}
}