AS3 / Flash - 在按钮的自定义类中添加事件侦听器 - 错误1061

时间:2011-11-10 16:00:53

标签: actionscript-3 flash addeventlistener

我在尝试向舞台上的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.

2 个答案:

答案 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);
        }   

    }

}