Функция прослушивателя событий не распознана - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть метод, который регистрирует прослушиватель событий для каждого из мувиклипов в массиве, который у меня есть. Метод находится внутри класса, как и функция слушателя. Проблема в том, что я получаю сообщение об ошибке «Доступ к неопределенному свойству handleNavToggle», даже если он объявлен.

Есть идеи?

public class Navigation {

    var navItems:Array;

    public function Navigation(navitems:Array) { ... }

    private function registerNavigationEvents():void {
        for each(var item:MovieClip in this.navItems) {
            item.addEventListener(MouseEvent.MOUSE_OVER, this.handleNavToggle);
            item.addEventListener(MouseEvent.MOUSE_OUT, this.handleNavToggle);
        }
    }

    public function handleNavToggle(e:MouseEvent):void {
        var mc:MovieClip = e.currentTarget as MovieClip;
        mc.gotoAndStop((mc.currentFrame == 1) ? 2 : 1);
    }

    ...
}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Выйдите из привычки использовать this без необходимости, что действительно только в следующих ситуациях:

  1. something.property = this;
  2. method(this);
  3. public function method(property:int):void
    {
        this.property = property;
    }
    

Тем не менее, попробуйте изменить свой код, чтобы исключить this.

public class Navigation
{

    private var _navItems:Array = [];

    public function Navigation(navItems:Array)
    {
        _navItems = navItems.slice();
        _registerNavigationEvents();
    }

    private function _registerNavigationEvents():void
    {
        for each(var i:MovieClip in _navItems)
        {
            i.addEventListener(MouseEvent.MOUSE_OVER, _handleNavToggle);
            i.addEventListener(MouseEvent.MOUSE_OUT, _handleNavToggle);
        }
    }

    private function _handleNavToggle(e:MouseEvent):void
    {
        var mc:MovieClip = MovieClip(e.target);
        mc.gotoAndStop((mc.currentFrame == 1) ? 2 : 1);
    }

}
0 голосов
/ 10 февраля 2012

Избавься от этого.перед именем функции просто передайте имя функции, в противном случае она думает, что ищет свойство, по некоторым причинам, я думаю, что это ["handleNavToggle"], также может работать, но почему все усложняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...