Страница 1 из 1

Анимированная генерация

Добавлено: 07 июн 2014, 12:32
Casperovskii
Доброго времени суток всем!
Я тут делаю простенькую иллюстрацию с генерацией графонистой (линии рисовать). Так вот из-за того, что все функции рисования вызываются в одной функции (извините за повтор) слушателя нажатия на кнопку и внутри цикла while, на экране выводится конечный результат. Никакого прогресс бара не сделаешь, соответственно.
Так вот вопрос, как грамотно сделать анимированную генерацию, то бишь чтобы каждый шаг этого цикла while после нажатия выводился отдельно? Для примера можно глянуть эту ссылку (тут не флеше, но анимация как раз такая, какая надо).

Re: Анимированная генерация

Добавлено: 07 июн 2014, 13:00
sasha^
легко... или внутри цикла каждый раз проверять условие для вывода и выводить, или генерировать событие самим циклом, что типа вот, готов 1 шаг=)

Re: Анимированная генерация

Добавлено: 07 июн 2014, 13:02
alexandr_ratush
Добрый день!
Если я вас правильно понял, то можно использовать объект Timer с определенным интервалом, и при каждом тике вызывать вашу функцию рисования.

Re: Анимированная генерация

Добавлено: 07 июн 2014, 14:04
Casperovskii
Код такого вида:

Код: Выделить всё

function buttonClickListener(...):void {while (condition) { draw(parametrs)}}
Можно чуть конкретнее, как его преобразовать?
Кнопка тыкается один раз и запускается эта функция.

Re: Анимированная генерация

Добавлено: 07 июн 2014, 14:19
sasha^
да, флеш не отрисовывает внутри цикла... потому или таймер, или ENTER_FRAME...

Re: Анимированная генерация

Добавлено: 07 июн 2014, 17:06
alexandr_ratush
Может такой вариант подойдет?

Код: Выделить всё

 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();

Re: Анимированная генерация

Добавлено: 09 июн 2014, 11:43
Casperovskii
alexandr_ratush
Надеюсь, что подойдет. Попробую. Сейчас загвоздка с некоторыми багами в программе. Как дойду до прикручивания анимации, так отпишусь, удалось или нет