Просмотр полной версии : путаница с послушивателями
Подскажите как правильно реализовать. Проблема в следующем создал я три прослушивателя событий на мувик. Event1(OVER) при наведении изменяет фрейм мувика с 1 на 2, а Event2(OUT) при отведении с 2 на 1 фрейм. Event3(CLICK) регистрирует клик и реализует переход с 1 на 2 фрейм в stage. Но при переходе с 1 на 2 фрейм в stage мувик у меня заменяется на другой. И консоль пишет что Event2(OVER) ссылается на обьект null. Ну как я понимаю это происходит потому что Event2(OVER) не находит мувик. Как правильно решить эту проблему?
Примерный код:
function knopka_test_OVER(event:MouseEvent){
test.gotoAndStop(2);
}
function knopka_test_out(event:MouseEvent){
test.gotoAndStop(1);
}
function knopka_test_click(event:MouseEvent){
gotoAndStop(2);
}
anmelegov
26.03.2012, 10:09
правильней всего перестать писать машины тьюринга и начать писать код в классах
Пропишите в каждом ключевом кадре вашей кнопки
this.stop();
(и желательно лейблы на них напишите)
A вот для вашего случая пример (для кадров)
this.stop();
btn.addEventListener(MouseEvent.MOUSE_OVER, over);
btn.addEventListener(MouseEvent.MOUSE_OUT, out);
btn.addEventListener(MouseEvent.CLICK, clickie);
function over(e:MouseEvent):void {
e.currentTarget.gotoAndStop(2); //вместо '2' пишите лучше "OVER"
}
function out(e:MouseEvent):void {
e.currentTarget.gotoAndStop(1);
}
function clickie(e:MouseEvent):void {
this.gotoAndStop(2);
}
Проблема в том что ваш код видимо существует в нескольких кадрах, а кнопка существует только в первом, ваше действие жестко прикреплено именно к этому объекту. Посудите сами: вы подписываетесь на событие, ловите его, а применять-то не к чему! И хоть "currentTarget" и решит вашу проблему, прислушайтесь к anmelegov'у и начинайте писать код в классах. А то несерьезно это...
И кстати, для мышиных кнопок есть стандартный класс SimpleButton, попробуйте воспользоваться им как шаблоном, а форму можете просто перерисовать.
правильней всего перестать писать машины тьюринга и начать писать код в классах
А кто сказал что этот код не в классе?
приведите пример исполнения как надо
strangedk
27.03.2012, 02:32
Event3(CLICK) регистрирует клик и реализует переход с 1 на 2 фрейм в stage. Но при переходе с 1 на 2 фрейм в stage мувик у меня заменяется на другой. И консоль пишет что Event2(OVER) ссылается на обьект null.
Так вы что, из Main класса у stage кадры переключаете?
Если уж на то пошло, оберните всю вашу программу в MovieClip, и его уже переключайте.
Не хочу повторять за всеми, но вариантов нет - стиль написания нужно менять, при чем кардинально.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.