Доброго времени суток всем!
Я тут делаю простенькую иллюстрацию с генерацией графонистой (линии рисовать). Так вот из-за того, что все функции рисования вызываются в одной функции (извините за повтор) слушателя нажатия на кнопку и внутри цикла while, на экране выводится конечный результат. Никакого прогресс бара не сделаешь, соответственно.
Так вот вопрос, как грамотно сделать анимированную генерацию, то бишь чтобы каждый шаг этого цикла while после нажатия выводился отдельно? Для примера можно глянуть эту ссылку (тут не флеше, но анимация как раз такая, какая надо).
Анимированная генерация
-
- Сообщения: 429
- Зарегистрирован: 22 июн 2012, 17:50
Re: Анимированная генерация
легко... или внутри цикла каждый раз проверять условие для вывода и выводить, или генерировать событие самим циклом, что типа вот, готов 1 шаг=)
- alexandr_ratush
- Сообщения: 94
- Зарегистрирован: 05 мар 2014, 21:47
Re: Анимированная генерация
Добрый день!
Если я вас правильно понял, то можно использовать объект Timer с определенным интервалом, и при каждом тике вызывать вашу функцию рисования.
Если я вас правильно понял, то можно использовать объект Timer с определенным интервалом, и при каждом тике вызывать вашу функцию рисования.
-
- Сообщения: 429
- Зарегистрирован: 22 июн 2012, 17:50
Re: Анимированная генерация
Код такого вида:
Можно чуть конкретнее, как его преобразовать?
Кнопка тыкается один раз и запускается эта функция.
Код: Выделить всё
function buttonClickListener(...):void {while (condition) { draw(parametrs)}}
Кнопка тыкается один раз и запускается эта функция.
Re: Анимированная генерация
да, флеш не отрисовывает внутри цикла... потому или таймер, или ENTER_FRAME...
- alexandr_ratush
- Сообщения: 94
- Зарегистрирован: 05 мар 2014, 21:47
Re: Анимированная генерация
Может такой вариант подойдет?
Код: Выделить всё
import flash.utils.Timer;import flash.events.TimerEvent; var arrParam:Array;var timer:Timer; function init():void { arrParam = new Array(); var i:int = 100; while (i) { // Сохраняем в массив наши параметры для рисования arrParam.push(i--); } // Рисуем draw();} function draw():void { // Рисуем через каждые 100 мс timer = new Timer(100, arrParam.length); timer.addEventListener(TimerEvent.TIMER, onTickHandler); timer.start();} function onTickHandler(e:TimerEvent):void { graphics.beginFill(0xff0000, 1); graphics.drawRect(arrParam.pop(), 5, 1, 5); // Выбираем последний эллемент массива и рисуем в той точке graphics.endFill();} init();
-
- Сообщения: 429
- Зарегистрирован: 22 июн 2012, 17:50
Re: Анимированная генерация
alexandr_ratush
Надеюсь, что подойдет. Попробую. Сейчас загвоздка с некоторыми багами в программе. Как дойду до прикручивания анимации, так отпишусь, удалось или нет
Надеюсь, что подойдет. Попробую. Сейчас загвоздка с некоторыми багами в программе. Как дойду до прикручивания анимации, так отпишусь, удалось или нет