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

U4enik 16.01.2011 01:37

Почему неработает цикл?
 
Приветствую, подскажите почему не работает цикл?

Есть 9 мувиков на сцене, при наведении на любой, он должен стать прозрачнее, при убирании курсора снова стать непрозрачным. Мувикам присвоены имена а1,а2,а3 и тд.

Код AS3:

for (var i:int = 1; i <= 9; i++){
 
        this["a" + i].addEventListener(MouseEvent.MOUSE_OVER, over);
        this["a" + i].addEventListener(MouseEvent.MOUSE_OUT, out);
 
        function over (e:MouseEvent):void{this.alpha = 0.3;}
        function out (e:MouseEvent):void{this.alpha = 1;}
}


КорДум 16.01.2011 01:46

Не пишите в кадрах.
Код AS3:

var i:int;
for (var i:int = 1; i <= 9; i++) {
        var a:MovieClip = getChildByName("a" + i) as MovieClip;
        a.addEventListener(MouseEvent.MOUSE_OVER, over);
        a.addEventListener(MouseEvent.MOUSE_OUT, out);
}
 
function over (e:MouseEvent):void {
        (e.currentTarget as MovieClip).alpha = .3;
}
 
function out (e:MouseEvent):void {
        (e.currentTarget as MovieClip).alpha = 1;
}


U4enik 16.01.2011 04:29

Я писал в первом кадре. А за подсказку спасибо, работает. Буду разбираться с примером.

goodguy 16.01.2011 11:28

Да в чем тут разбираться? Все просто.
Здесь:
Код AS3:

 
for (var i:int = 1; i <= 9; i++){
 
        this["a" + i].addEventListener(MouseEvent.MOUSE_OVER, over);
        this["a" + i].addEventListener(MouseEvent.MOUSE_OUT, out);
 
        function over (e:MouseEvent):void{this.alpha = 0.3;}
        function out (e:MouseEvent):void{this.alpha = 1;}
}

Функции исчезают по завершении цикла

КорДум вынес их за пределы цикла

alatar 16.01.2011 11:56

Цитата:

Функции исчезают по завершении цикла
Они не исчезают, а плодятся при каждой итерации цикла, а не работают потому, что альфа меняется не у детишек, а у контейнера.

cleptoman 16.01.2011 12:53

AS2шная область видимости.)

КорДум 16.01.2011 13:43

Цитата:

AS2шная область видимости.)
Код в кадре, так что AS1 ;)

this["a" + i] - так топикстартер ломится к свойству главного класса (после сборки swf все это же склеивается в один большой класс, верно?)
А еще я сделал код красивым


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

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