Форум 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=152643)

Ossikuro 20.03.2011 22:42

массив для мувиклипов
 
Вложений: 1
Здравствуйте, подскажите пожалуйста, что я делаю не так? На сцене лежит несколько кнопок-мувиклипов, попыталась собрать в массив, но при наведении на кнопки курсора анимация не работает.

Код AS3:

var btns:Array = new Array('btn_l1','btn_l2','btn_l3','btn_l4');
function menu() {
const number:uint = 4;
for (var i:uint = 0; i <number; i++){
  btns.addEventListener(MouseEvent.ROLL_OVER, btnOver);
  btns.addEventListener(MouseEvent.ROLL_OUT, btnOut);
  btns.addEventListener(MouseEvent.CLICK, btnClick);
  btns.buttonMode = true;
}
};
 
function btnOver(e:MouseEvent):void {
        e.currentTarget.gotoAndPlay("over");
}
 
function btnOut(e:MouseEvent):void {
        e.currentTarget.gotoAndPlay("out");
}
 
function btnClick(e:MouseEvent):void {
        e.currentTarget.gotoAndPlay("out");
}

Спасибо)

scarbo 20.03.2011 22:46

Код AS3:

for (var i:uint = 0; i <number; i++){
  btns.addEventListener(MouseEvent.ROLL_OVER, btnOver);
  btns.addEventListener(MouseEvent.ROLL_OUT, btnOut);
  btns.addEventListener(MouseEvent.CLICK, btnClick);
  btns.buttonMode = true;
}

Это чего такое? На массив листнер вешать?

Ossikuro 20.03.2011 22:48

это глупость написала, видимо? А не подскажете что посмотреть, чтоб исправить?

Bgg 20.03.2011 22:57

Код AS3:

for (var i:uint = 0; i <number; i++){
  btns[i].addEventListener(MouseEvent.ROLL_OVER, btnOver);
  btns[i].addEventListener(MouseEvent.ROLL_OUT, btnOut);
  btns[i].addEventListener(MouseEvent.CLICK, btnClick);
  btns[i].buttonMode = true;
}


kseniya 20.03.2011 22:59

вот так будет правильнее
Код AS3:

        for (var i:uint = 0; i <number; i++) {
                this[btns[i]].addEventListener(MouseEvent.ROLL_OVER, btnOver);
                this[btns[i]].addEventListener(MouseEvent.ROLL_OUT, btnOut);
                this[btns[i]].addEventListener(MouseEvent.CLICK, btnClick);
                this[btns[i]].buttonMode = true;
        }


Ossikuro 20.03.2011 23:07

А ведь все равно почему-то не работает(

Bgg 20.03.2011 23:07

Цитата:

Сообщение от kseniya (Сообщение 982262)
вот так будет правильнее
Код AS3:

        for (var i:uint = 0; i <number; i++) {
                this[btns[i]].addEventListener(MouseEvent.ROLL_OVER, btnOver);
                this[btns[i]].addEventListener(MouseEvent.ROLL_OUT, btnOut);
                this[btns[i]].addEventListener(MouseEvent.CLICK, btnClick);
                this[btns[i]].buttonMode = true;
        }


Почему правильнее?

kseniya 20.03.2011 23:08

потому что у неё
Код AS3:

var btns:Array = new Array('btn_l1','btn_l2','btn_l3','btn_l4');

или вы собрались слушатель вешать на String?
Цитата:

Сообщение от Ossikuro (Сообщение 982270)
А ведь все равно почему-то не работает(

разместите этот код у себя в кадре
Код AS3:

var btns:Array = new Array('btn_l1','btn_l2','btn_l3','btn_l4');
const number:uint = 4;
for (var i:uint = 0; i <number; i++) {
        this[btns[i]].addEventListener(MouseEvent.ROLL_OVER, btnOver);
        this[btns[i]].addEventListener(MouseEvent.ROLL_OUT, btnOut);
        this[btns[i]].addEventListener(MouseEvent.CLICK, btnClick);
        this[btns[i]].buttonMode = true;
}
function btnOver(e:MouseEvent):void {
        e.currentTarget.gotoAndPlay("over");
}
function btnOut(e:MouseEvent):void {
        e.currentTarget.gotoAndPlay("out");
}
function btnClick(e:MouseEvent):void {
        e.currentTarget.gotoAndPlay("out");
}


Bgg 20.03.2011 23:15

О май год, да, вы правы, думал название темы не врет.

Ossikuro 20.03.2011 23:16

большое спасибо, string не нужен. Разобралась в ошибке

Psycho Tiger 20.03.2011 23:17

this["something"] означает, что должно быть свойство something, доступное в этом скоупе. Совсем необязательно, что будет аналогия с declare stage instances или как там её. В общем случае правильно так:
Код AS3:

var btns:Array = new Array('btn_l1','btn_l2','btn_l3','btn_l4');
const number:uint = 4;
for (var i:uint = 0; i <number; i++){
var clip:InteractiveObject=getChildByName(btns[i]) as InteractiveObject;
  clip.addEventListener(MouseEvent.ROLL_OVER, btnOver);
  clip.addEventListener(MouseEvent.ROLL_OUT, btnOut);
  clip.addEventListener(MouseEvent.CLICK, btnClick);
  clip.buttonMode = true;
};


Ossikuro 20.03.2011 23:47

совсем не поняла вас) Очень сложно написано для неопытного мозга. Местами даже гугль не помог. А на код вылетает ошибка:
Код:

1119: Access of possibly undefined property buttonMode through a reference with static type flash.display:InteractiveObject.
ругается на строку
Код AS3:

  clip.buttonMode = true;


scarbo 20.03.2011 23:51

Тигра попутал немного, баттонМоде у спрайта появляется только.
Вот тогда надо:
Код AS3:

var clip:Sprite=getChildByName(btns[i]) as Sprite;


Psycho Tiger 20.03.2011 23:53

Цитата:

Сообщение от scarbo (Сообщение 982292)
Тигра попутал немного, баттонМоде у спрайта появляется только.
Вот тогда надо:
Код AS3:

var clip:Sprite=getChildByName(btns[i]) as Sprite;


Да, верно )
Не заметил.


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

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