Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   While выполнение до условия с парочей "под-условий" (http://www.flasher.ru/forum/showthread.php?t=183092)

MINASTIS 11.08.2012 18:09

While выполнение до условия с парочей "под-условий"
 
Вообще, моя задача стоит в том, чтобы сделать появление кнопок меню поочередно. В классе меню, где идет создание классов кнопок, стоит цикл. Цикл выполняется до тех пор, пока не будет создано столько кнопок, сколько было указано при создании меню (у меня 7).

Суть в том, что я это сделал в цикле. Вот цикл, функция getMotionFinished в кнопке возвращает переменную motionFinishedVar, которая изменяется на true лишь после окончания движения Tween-а внутри кнопки.
То есть цикл while выполняется все эти 7 или сколько секунд пока все твины 7-и кнопок не возвратят в своих функциях getMotionFinished true (там return той переменной стоит).

Может я как-то не так это понимаю? После компила все зависает и сообщает, что цикл сильно долго шел и его пришлось отключить. На выходе - одна кнопка, первая, которая под условием висит в else.

Код AS3:

private function drawMenu(e:Event)
                {
                        //Цикл рисования меню
                        while (i<(buttonsNumber-1))
                        {
 
                                if (i > 0)
                                {
                                        if (arrayOfButtons[i - 1][0].getMotionFinished() == true)
                                        {
                                                arrayOfButtons[i] = new Array  ;
                                                arrayOfButtons[i][0] = new MyButton("Кнопочка " + i);
                                                arrayOfButtons[i][0].y +=  arrayOfButtons[i - 1][0].y + arrayOfButtons[i - 1][0].height;
                                                addChild(arrayOfButtons[i][0]);
                                                i++
                                        }
 
 
                                }
                                else
                                {
                                        arrayOfButtons[i] = new Array  ;
                                        arrayOfButtons[i][0] = new MyButton("Кнопочка " + i);
                                        addChild(arrayOfButtons[i][0]);
                                        i++;
                                }
 
                        }
                }

По дефолту i, конечно же, 0.
Просто при вызове 7 кнопок (почему я в условии while-а пишу i-1) в массив arrayOfButtons добавляется от 0 до 6-и элементов :)

Вопрос у меня такой, почему цикл не хочет так работать?

Добавлено через 10 минут
Минутку... А можно как-нибудь listener сделать на getMotionFinished, когда станет true просто делать i++ и вызывать функцию drawButton к примеру?
Как сделать слушатель на свой параметр?

samana 11.08.2012 18:38

А почему бы не использовать таймер, и создавать кнопки через определённый интервал времени?

Wolsh 11.08.2012 18:43

Посылать из кнопки событие, что анимация закончилась. В хендлере запускать следующую кнопку после проверки количества.

MINASTIS 11.08.2012 19:14

Я еще не полностью познал классы и подклассы. Не подскажите, как послать событие наверх, в класс MyMenu, будучи в классе MyButton?

Добавлено через 17 минут
О, глупый вопрос. Пора переставать задавать вопросы не погуглив. Нашел dispatchEvent, сейчас все сделаю.
Спасибо, Wolsh!


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

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