AS3 / Flash - добавление прослушивателя событий в пользовательский класс кнопки - ошибка 1061 - PullRequest
1 голос
/ 10 ноября 2011

Я получаю сообщение об ошибке при попытке добавить прослушиватель событий в класс Button на моей сцене.

1061: вызов возможно неопределенного метода addEventListener через ссылку со статическим типомClass.

На моем этапе у меня есть кнопка с именем экземпляра stopBtn, она также экспортируется в класс actionscript с именем classes.stopBtn (stopBtn.as в папке с именем 'classes').Кнопка находится на первом ключевом кадре в основной временной шкале в слое с другими кнопками в этом слое

Ошибка в строке 10 файла stopBtn.as:

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

    }

}

IЯ нашел много потоков для кода ошибки 1061, но ни одна из них, похоже, не относится к моей проблеме!

Я пытался убедиться, что все типы событий импортированы с использованием

Import flash.events.*; but this makes no difference.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Это должно быть довольно очевидно. Вы пытаетесь добавить прослушиватель событий в класс, а не в объект.

 stopBtn.addEventListener(MouseEvent.CLICK, stopButtonFunction);

stopBtn - это имя класса, который вы создали. Чтобы добавить прослушиватель событий в экземпляр, измените код на

this.addEventListener(MouseEvent.CLICK, stopButtonFunction);

Это обеспечит добавление прослушивателя событий к объекту кнопки, а не к классу, как вы пытались (как вы видели, это не разрешено, потому что это не имеет смысла)

1 голос
/ 10 ноября 2011

Ваш код должен быть похож на

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

    }

}
...