2012-09-02 42 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而不會引發錯誤,但不會響應命令。