Форум Flasher.ru

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

Cornford 12.02.2010 20:38

непонятная ошибка слушателей 1120
 
здравствуйте!.
есть некоторая проблема, которую не могу решить сам. надеюсь на вашу помощь. суть состоит в следующем:
имеется некотрое количество однотипных кнопок.
все они типа MovieClip.
создаю слушателей событий:
Код AS3:

one11.addEventListener(MouseEvent.MOUSE_OVER, over1);
one11.addEventListener(MouseEvent.MOUSE_OUT, out1);
one11.addEventListener(MouseEvent.CLICK, mclick1);
two22.addEventListener(MouseEvent.MOUSE_OVER, over2);
two22.addEventListener(MouseEvent.MOUSE_OUT, out2);
two22.addEventListener(MouseEvent.CLICK, mclick2);
three33.addEventListener(MouseEvent.MOUSE_OVER, over3);
three33.addEventListener(MouseEvent.MOUSE_OUT, out3);
three33.addEventListener(MouseEvent.CLICK, mclick3);
for44.addEventListener(MouseEvent.MOUSE_OVER, over4);
...

для каждой кнопки события: наведение, отведение и нажатие.
для первых трёх кнопок всё нормально действует, но четвёртая и последующие выдают ошибку:
1120: Access of undefined property over4.
менял имя "over4" на всякие разные. ничего не помогает. как можно справиться с проблемой?

СлаваRa 12.02.2010 20:41

компилятор говорит что over4 - не определено,...

а, простите, зачем столько листеров вешать?

Cornford 12.02.2010 20:59

ну мне просто надо создать для каждой из 10 кнопок чтобы при наведении изменялся цвет(проигрывается ролик внутри кнопки), при отведении цвет возвращался в первоначальную позицию, ну и при нажатии цвет. я не знаю как сделать подругому. знаю только так) .
Цитата:

компилятор говорит что over4 - не определено,...
ну я же его определяю. так же как и все предыдущие. в чём разница?

cleptoman 12.02.2010 21:09

Код AS3:

var btnsArray:Array = [one11,two22,three33,for44];
 
function outHandler(e:MouseEvent){
(e.target as ButtonClass).setDefaultLightMethod();
}
function overHandler(e:MouseEvent){
(e.target as ButtonClass).setHighLightMethod();
}
function clickHandler(e:MouseEvent){
//do something
}
 
var button:ButtonClass;
for each(button in btnsArray){
button .addEventListener(MouseEvent.MOUSE_OVER, overHandler);
button .addEventListener(MouseEvent.MOUSE_OUT, outHandler);
button .addEventListener(MouseEvent.CLICK, clickHandler);
}

ну как то так

Cornford 12.02.2010 21:30

Ошибку решил. просто видимо если определяешь слушателя и действие, то нужно типа сразу использовать его. я написал для 4-й кнопки:
Код AS3:

function over4(events:Event):void{
for44.gotoAndStop(2);}
function out4(events:Event):void{
for44.gotoAndStop(1);}
function mclick4(events:Event):void{
if (MouseEvent.CLICK){
for44.gotoAndStop(2);
for44.removeEventListener(MouseEvent.MOUSE_OVER, over4);
for44.removeEventListener(MouseEvent.MOUSE_OUT, out4);}}

и ошибка исчезла.
cleptoman, спасибо конечно, но для меня это покачто сложновато). уж лучше буду стопитсот одинаковых кодов писать.

cleptoman 12.02.2010 21:44

if (MouseEvent.CLICK){} порадовало ))

Cornford 12.02.2010 21:51

ну какбы.. работает и ладно))
а что не так?

cleptoman 12.02.2010 22:23

то что это условие всегда будет выполянться )..MouseEvent.CLICK - это статичный стринг..при приведении к булевой будет всегда тру. это все равно что написать if(true){}

hidden_HD 16.07.2013 17:30

А теперь мне помочь, та же проблема:
Код AS3:

package {
        import flash.display.Sprite;
        import flash.display.SimpleButton;
        import flash.events.MouseEvent;
 
        public class splash extends Sprite {
 
                public var main_class:the_game;
                public function splash(passed_class:the_game) {
                        main_class = passed_class;
 
                        play_button.addEventListener(MouseEvent.CLICK, on_play_button_clicked);
 
                        option_button.addEventListener(MouseEvent.CLICK, on_how_to_button_clicked);
                }
 
                public function on_play_button_clicked(event:MouseEvent) {
                        main_class.play_the_game();
 
                }
                public function on_how_to_button_clicked(event:MouseEvent) {
                        main_class.show_options();
                }
        }
}

на экране просто две одинаковые кнопки. только первая работает а на вторую ругается 1120 - не видит и все...

tsarapkabel 16.07.2013 18:17

1. Обрамляйте код тэгами [as3]
2. Ошибок в Вашем коде нет, скорее всего проблема с именем (instance name) второй кнопки.


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

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