2012-09-02 94 views
3

我有一个在Flash Professional中创建的.swf动画。在我的动作项目中使用它,我把它嵌入如下:嵌入式.swf动画不停止停止()调用?

[Embed(source="../lib/fetching.swf")] 
public var Fetching:Class; 

我然后创建一个实例,并将其添加如下的阶段:

//class variable 
var mc:MovieClip; 

mc = new Fetching(); 
this.addChild(mc); 

这使我的动画出现在屏幕和循环无限期。但是,在拨打mc.stop()时,动画不会停止。我已经尝试通过调用removeChild(mc)从舞台上移除动画片段,但在ENTER_FRAME事件中添加侦听器告诉我动画片段仍在播放。

回答

3

您应该设置Embed源mimeType,然后转换为ByteArray。并加载。因为您无法将类型强制类型强制类转换为MovieClip。如果您明确定义了mimeType并强制转换,您将获得大约TypeError #1034: Type Coercion failed: cannot convert [email protected] to flash.display.MovieClip

请参阅以下代码。

package 
{ 
    import flash.display.Loader; 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.utils.ByteArray; 

    public class TestProject extends Sprite 
    { 
     [Embed(source="../lib/fetching.swf", mimeType="application/octet-stream")] 
     public var Fetching:Class; 

     public var loader:Loader = new Loader(); 

     private var mc:MovieClip; 

     public function TestProject() 
     { 
      loader.loadBytes(new Fetching() as ByteArray); 
      loader.contentLoaderInfo.addEventListener(Event.INIT, onSwfLoaded); 
      this.addChild(loader); 
     } 

     private function onSwfLoaded(e:Event):void 
     { 
      mc = loader.content as MovieClip; 
      mc.stop(); 
     } 
    } 
} 
+0

swf文件扩展了movieClip,那么为什么你不能投射一个这样的? – BadFeelingAboutThis

+0

我一直使用swf文件不使用嵌入。只使用一个Loader。所以我不知道确切的原因。但我知道参考这篇文章:(1):[embedded-movieclip-gotcha](http://www.airtightinteractive.com/2008/05/as3-embedded-movieclip-gotcha/)(2):[embed movieclip从外部swf运行时错误](http://jadendreamer.wordpress.com/2010/11/18/as3-fix-embed-movieclip-from-external-swf-runtime-error/)(3):[问题 - 与-embedding-swfs-in-actionscript-or-flex](http://chrismweb.com/2011/03/20/problems-with-embedding-swfs-in-actionscript-or-flex/) –

+0

当您嵌入SWF,你得到的是扩展Loader而不是MovieClip的东西。这个Loader将调用带有包含SWF的嵌入ByteArray的LoadBytes()。只有在SWF中嵌入特定符号时,嵌入对象才会成为MovieClip。 – cleong

1

你检查,以确保嵌入的剪辑编为AVM2(即它面向的AS3,而不是AS1或AS2)? Avm1 swf可以投射到MovieClip而不会引发错误,但不会响应命令。