Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анимация графики 
V
    Опции темы
DenisSh
Дата 28.1.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 16.9.2008
Где: Taganrog

Репутация: нет
Всего: 2



Допустим есть вот такое демо которое рисует пять линий

Код

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            import flash.display.Shape;
            
            private function init():void
            {
                var bmd:BitmapData = new BitmapData(drawingCanvas.width,drawingCanvas.height);
                var bm:Bitmap = new Bitmap(bmd);
                
                drawingCanvas.rawChildren.addChild(bm);
                
                for (var i:int = 0; i < 100; i+=20)
                {
                bmd.draw(drawLine(new Point(i,0),new Point(i,50)));
                //sleep
                }                
            }    
            
            private function drawLine(startPoint:Point,endPoint:Point):Shape
            {
                var lineShape:Shape = new Shape();
                lineShape.graphics.lineStyle(2,0x000000,1);
                lineShape.graphics.moveTo(startPoint.x,startPoint.y);
                lineShape.graphics.lineTo(endPoint.x,endPoint.y);
                
                return lineShape;
            }        
        ]]>
    </mx:Script>
    <mx:Canvas id="drawingCanvas" width="600" height="400" cacheAsBitmap="true" />
</mx:Application>


мне необходимо чтобы линии появлялись не сразу все, а одна за одной через промежуток времени например через секунду, т.е. сделать подобие анимации. для этого мне в месте //sleep например надо реализовать что то типа паузы. setInterval пробовал но он блокирует все и в конце я вижу все пять линий сразу.

Как тут можно сделать анимацию появления линий?


PM MAIL ICQ   Вверх
nilrem
Дата 29.1.2010, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 15.2.2006
Где: Киев

Репутация: нет
Всего: нет



1) Нафиг рисовать всет в Bitmap'е? пять линий в векторе не особо сильно загружают память чтобы так выпедриваться. (А если не получается в Canvas засунуть спрайт, пользуйтесь UIComponent'ом)
2) Браться за фреймворк AS3 глупо не зная самого AS3:
Просто малюет линии в произвольных координатах
Код

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            private var timer:Timer;//Таймр
            private var g:Graphics;
            private var count:int;
            
            private function init():void{
                var shape:Shape = new Shape(); 
                this.g = shape.graphics;
                this.target.addChild(shape); 
                this.timer = new Timer(30);//Время, в миллисекундах, через которое срабатывает drawRandomLine
                this.timer.addEventListener(TimerEvent.TIMER, this.drawRandomLine);
                this.timer.start();
            }
            
            private function drawRandomLine(event:TimerEvent = null):void{
                if(this.count > 50){//посел, например 50 остановиться
                    this.timer.stop();
                    this.timer.removeEventListener(TimerEvent.TIMER);
                    return void;}//не люблю else'ов :)
                g.lineStyle(2, 0x666666);
                g.moveTo(Math.random()*600, Math.random()*600);
                g.lineTo(Math.random()*600, Math.random()*600);
                this.count++;
            }
        ]]>
    </mx:Script>
    <mx:UIComponent id="target" />
</mx:Application>



Это сообщение отредактировал(а) nilrem - 29.1.2010, 01:38
PM MAIL WWW ICQ Skype   Вверх
DenisSh
Дата 29.1.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 16.9.2008
Где: Taganrog

Репутация: нет
Всего: 2



Цитата(nilrem @ 29.1.2010,  01:35)
1) Нафиг рисовать всет в Bitmap'е? пять линий в векторе не особо сильно загружают память чтобы так выпедриваться. (А если не получается в Canvas засунуть спрайт, пользуйтесь UIComponent'ом)

я просто как пример показал того что мне надо....на самом деле в приложении идет работа с BitmapData (erase tool, smudge, fill и т.д.)....

Timer как и setInterval почему то не работают в моем случае, bitmapdata блокируется и идет вывод только конечно результата....попробую поковыряться может неправильно их использовал...
PM MAIL ICQ   Вверх
nilrem
Дата 29.1.2010, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 15.2.2006
Где: Киев

Репутация: нет
Всего: нет



PM MAIL WWW ICQ Skype   Вверх
DenisSh
Дата 29.1.2010, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 16.9.2008
Где: Taganrog

Репутация: нет
Всего: 2



Цитата(nilrem @ 29.1.2010,  20:23)
http://help.adobe.com/ru_RU/AS3LCR/Flash_1...ml#unlock%28%29 
может поможет это?

да мануалы я почти наизусть знаюsmile там просто дело в другом было...я отрисовку делал отдельно от таймера....

а вообще я нашел полностью то что надо в моем случае http://blog.efnx.com/as3-animation-class-t...lace-movieclip/

спасибо за помощь!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0407 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.