Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.08.2012, 18:09
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 1  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
По умолчанию 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 к примеру?
Как сделать слушатель на свой параметр?

Старый 11.08.2012, 18:38
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
А почему бы не использовать таймер, и создавать кнопки через определённый интервал времени?

Старый 11.08.2012, 18:43
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 3  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Посылать из кнопки событие, что анимация закончилась. В хендлере запускать следующую кнопку после проверки количества.
__________________
Reality.getBounds(this);

Старый 11.08.2012, 19:14
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 4  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
Я еще не полностью познал классы и подклассы. Не подскажите, как послать событие наверх, в класс MyMenu, будучи в классе MyButton?

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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