2012-07-02 1 views
1

Я ищу способ сделать клип Flash (анимация, как и созданные с помощью Flash Pro CS), но только в as3 - поэтому я могу импортировать их в Prezi.Имитация MovieClip в чистом виде as3

Я сделал много программирования as3 в Flash Builder с проектами Flex, и у меня нет фона в работе MovieClips.

Что я уже пробовал - это расширение класса MovieClip и попытка создания анимации на таймерах, это не удалось, поэтому я попытался с событием ENTER_FRAME (потому что флеш-анимация основана на фреймах, поэтому я думал ...). Но все это терпит неудачу, отображаются только графики, нарисованные в конструкторе - анимация не происходит. (Как я писал в первом абзаце, я тестирую это импортирование swf в Prezi, открытие его в браузере работает как ожидалось)

Есть ли способ сделать это? Как слушать определенные события?

+1

Что конкретно вы пытаетесь сделать? просто нарисуйте что-нибудь живое? В этом случае вы можете забыть концепцию фрейма и посмотреть на анимацию объекта. –

+0

Я хотел бы программно создать анимацию и добавить объекты - не только анимировать существующий – er453r

+0

Событие ENTER_FRAME звучит так, как вы хотите. Вы ошибаетесь в том, что «отображаются только графики, нарисованные в конструкторе», вы можете рисовать графику всякий раз, когда захотите, но вам, возможно, придется вызвать clear(), прежде чем рисовать что-нибудь новое. –

ответ

1

Забавная вещь. Я хотел показать вам пример кода, который я пытался (я уже пробовал Sprite с помощью ENTER_FRAME), который не работал. Случайно я нашел решение. Похоже, вам нужно нарисовать что-то в первом кадре, иначе остальные кадры не будут работать (по крайней мере, в Prezi).

Так вот рабочий код:

public class PreziTest extends Sprite{ 
     private var radius:uint = 10; 

     public function PreziTest(){ 
      addEventListener(Event.ENTER_FRAME, onEnterFrame); 

      onEnterFrame(null); // WITHOUT THIS IT WON'T WORK - YOU NEED TO DRAW SOMTHING IN THE FIRST FRAME 
     } 

     private function onEnterFrame(event:Event):void{ 
      radius += 10; 

      if(radius > 200) 
       radius = 10; 

      graphics.clear(); 
      graphics.beginFill(0xff0000); 
      graphics.drawCircle(radius, radius, radius); 
     } 
    } 

Спасибо за вашу помощь!

1

Дайте спрайт лист попробовать. Это лучшее решение для анимации в AS3, а также довольно просто реализовать. для изменения чертежа для этого есть событие Timer и ENTER_FRAME.

+1

Листы спрайтов также намного, намного лучше для производительности. – Marty