Проблемы при попытке получить идентификатор из eventLlistener - PullRequest
0 голосов
/ 24 января 2011

Я пытаюсь отправить идентификатор через прослушиватель событий в функцию прослушивания.Теперь это работало раньше, когда я создавал кнопки только с помощью кода, но когда я решил использовать существующие мувиклипы, он остановился, и я не могу понять, почему.

Вот мой код кнопки.

private function addButtons(){
        button1 = new ButtonMC();
        //add the buttons
        button1.id = 1;
        button1.addEventListener(MouseEvent.CLICK, gameClick, false, 0, true);
        button1.buttonMode = true;
        addChild(button1);
        trace("button1 = "+button1.id);

}

трассировка находит button1.id без проблем.Так хорошо, пока.Когда я запускаю это, функция слушателя сообщает как «неопределенная».Вот мой код функции слушателя.(не все это .. только соответствующая часть).

private function gameClick(evt:MouseEvent):void{
        trace("clicked "+evt.target.id);
        var gameTypeID = evt.target.id;

}

Этот код находится в своем отдельном классе, который генерирует стартовый экран.Кнопки movieClip являются дубликатами MC в библиотеке, которая экспортируется как ButtonMC.Я полностью озадачен тем, почему это не работает сейчас.Когда это сработало, «сгенерированные» кнопки, где все еще нормальные мувиклипы, так что я не вижу там никакой разницы.Может быть, это и есть область действия, но, учитывая весь этот код в одном классе, я не понимаю, почему это может быть проблемой.

Может кто-нибудь заметить мой идиотизм и сообщить мне, пожалуйста?Ваша помощь, как всегда, очень ценится.

Ответы [ 2 ]

3 голосов
/ 24 января 2011

Моим первым предположением будет то, что фактическая фигура или спрайт, по которым щелкают в экземпляре ButtonMC, регистрируется как event.target.Вы можете проверить эту теорию и отследить getQualifiedClassName (event.target) в своем слушателе.Или вы можете попробовать исправить это сразу и добавить button1.mouseChildren = false;, чтобы посмотреть, работает ли оно.

1 голос
/ 24 января 2011

Свойство target, полученное из события мыши, относится к фактически нажатому DisplayAsset - в данном случае, к некоторому другому DisplayAsset внутри вашей кнопки. Вы, вероятно, заметите, что target parent - это кнопка (или parent parent и т. Д.).

В любом случае, используйте currentTarget вместо этого, чтобы получить цель, к которой добавлено событие, или установите mouseChildren в качестве false для кнопки (таким образом, ее дочерние элементы сами не будут захватывать события мыши).

...