2012-07-02 78 views
1

我正在寻找一种制作Flash影片剪辑(动画,就像使用Flash Pro CS创建的剪辑)的方法,但纯粹在as3中 - 因此我可以将它们导入Prezi。在纯as3中模拟MovieClip

我已经使用Flex项目在Flash Builder中完成了很多as3编程,并且我没有背景介绍MovieClip的工作方式。

我已经尝试过的是扩展MovieClip类,并试图将动画基于定时器,这失败了,所以我尝试使用ENTER_FRAME事件(因为Flash动画基于帧 - 所以我认为...)。但是,所有这些都失败了,只会显示构造函数中绘制的图形 - 不会发生动画。 (正如我在第一段中写的,我正在测试这个将swf导入Prezi,在浏览器中按预期工作)

有没有办法做到这一点?喜欢听特定的事件?

+1

你特别想做什么?只是画一些动画呢?在这种情况下,您可能会忘记框架概念并查看补间对象。 –

+0

我想以编程方式创建一个动画并添加对象 - 不仅使现有的动画生效 – er453r

+0

ENTER_FRAME事件听起来像你想要的。你错了“只有在构造函数中绘制的图形被显示出来”,你可以随时绘制图形,但是你可能必须在绘制任何新图形之前调用clear()。 –

回答

1

有趣的事情发生了。我想给你看一个我正在尝试的示例代码(我已经尝试使用ENTER_FRAME发送Sprite),那是行不通的。偶然发现了一个解决方案。看起来你需要在第一帧画一些东西,否则其他帧将不起作用(至少在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

Sprite表也很多,性能要好得多。 – Marty