Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   конфликт слушателей (http://www.flasher.ru/forum/showthread.php?t=140941)

In8Finity 11.06.2010 12:24

конфликт слушателей
 
У меня кнопка sound0 лежит на сцене и есть два слушателя:
Код AS3:

stage.addEventListener(MouseEvent.MOUSE_DOWN,KeyMouseOn);
sound0.addEventListener(MouseEvent.CLICK, playMusic);

И я когда нажимаю мышей на эту кнопку у меня заодно срабатывает событие KeyMouseOn, как если бы я кликал в любое другое место на сцене.
Как мне отсечь это второе событие?
Чтобы при нажатии на кнопку выполнялось только то событие, которое привязано к этой кнопке.

dimarik 11.06.2010 12:34

В обработчике playMusic сделать
Код AS3:

event.stopPropagation();


St.Shaeen 11.06.2010 13:36

Попробуй сделать подложку, просто прямоугольник по размерам сцены - прозрачность на ноль, и ложи её под кнопку и потом на неё прикручивай слушателя

SeDo4 11.06.2010 14:17

У меня похожий вопрос. Надо на одну кнопку повесить несколько прослушивателей: наведении, нажатие и т.п.
Наверняка у меня не работает из-за того, что руки кривые, но подскажите как это можно сделать. Хотя бы направьте в нужную сторону)

КорДум 11.06.2010 14:17

Код в студию.

Хемуль 11.06.2010 14:27

Цитата:

Сообщение от SeDo4 (Сообщение 914714)
У меня похожий вопрос. Надо на одну кнопку повесить несколько прослушивателей: наведении, нажатие и т.п.
Наверняка у меня не работает из-за того, что руки кривые, но подскажите как это можно сделать. Хотя бы направьте в нужную сторону)

Это делается с помощью метода addEventListener. Для подписи нескольких слушаетелей на несколько событий, нужно несколько раз вызвать этот метод.
Код AS3:

button.addEventListener(MouseEvent.CLICK, button_onMouseClick);
button.addEventListener(MouseEvent.ROLL_OVER, button_onRollOver);
button.addEventListener(MouseEvent.ROLL_OUT, button_onRollOut);


St.Shaeen 11.06.2010 14:29

Цитата:

Сообщение от SeDo4 (Сообщение 914714)
У меня похожий вопрос. Надо на одну кнопку повесить несколько прослушивателей: наведении, нажатие и т.п.
Наверняка у меня не работает из-за того, что руки кривые, но подскажите как это можно сделать. Хотя бы направьте в нужную сторону)

Для кнопки BTN

Код AS3:

BTN.addEventListener(MouseEvent.ROLL_OVER,onBTN);
function onBTN(e:MouseEvent):void{
исполняемая функция
}
BTN.addEventListener(MouseEvent.CLICK,clickBTN);
function clickBTN(e:MouseEvent):void{
исполняемая функция
}

ну и так далее

КорДум 11.06.2010 14:38

Если это не кнопка, а кнопочный клип или просто статичный спрайт, то у него нужно включить buttonMode, дабы заработал MouseEvent.CLICK

SeDo4 11.06.2010 15:20

Вложений: 1
Совсем запутался.
Вот мой первый прослушиватель:
Код AS3:

button1.addEventListener(MouseEvent.MOUSE_OVER, ons);
function ons(e:MouseEvent):void
{
        gotoAndPlay("button1");
}

Он работает, хотя я и не понимаю почему)
Пытаюсь добавить второй как написал St.Shaeen.
Оказывается, что это даже не кнопка?

Попробывал заменить на конструкцию, написанную Хемуль
Код AS3:

button1.addEventListener(MouseEvent.CLICK, button_onMouseClick);
function button_onMouseClick(e:MouseEvent):void
{
        gotoAndPlay("button1");
}

Это работает. Добавляю вторую строчку
Код AS3:

button1.addEventListener(MouseEvent.CLICK, button_onMouseClick);
function button_onMouseClick(e:MouseEvent):void
{
        gotoAndPlay("button1");
}
button1.addEventListener(MouseEvent.ROLL_OVER, button_onRollOver);
function button_onRollOver(e:MouseEvent):void
{
        gotoAndPlay("button1");
}

Работает. Теперь у меня при навдении и при клике происходит одно и тоже действие. Уже неплохо. Теперь мне нужно, что бы при наведении происходило одно, а при клике - другое.

Не могу понять одного: как идёт связь между кнопкой и объектом. В моём случае: как сделать распределение между разными прослушивателями кнопки и объектами с разной анимацией.
Вот пример того, что сейчас у меня есть. А мне необходимо, что бы при клике, например, появлялся новый круг. Если я его просто добавлю, то он будет работать вместе с первой анимацией.

Чувствую, что вопрос глупый, но сам пока дойти до решения не могу. Кто подскажет в какую сторону смотреть?
__
Вроде что-то похожее нашёл в ФАКе, читаю.

КорДум 11.06.2010 15:27

Цитата:

Он работает, хотя я и не понимаю почему)
Наступило одно событие - сработал один метод. Наступило второе событие - сработал второй метод.


Часовой пояс GMT +4, время: 22:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.