2010-03-02 176 views
7

嗨我正在加載一個外部swf到一個MovieClip中,我希望它停止,直到我選擇播放。目前它在立即加載時播放。AS3停止外部swf

var mc:MovieClip; 

var swfLoader:Loader = new Loader(); 
swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, eventLoaded); 
var request:URLRequest; 
request = new URLRequest("external.swf"); 
swfLoader.load (request); 

function  eventLoaded(e:Event): void 
{ 
    mc = e.target.content as MovieClip; 
// does not stop the clip 
    mc.Stop(); 
} 

所以我嘗試添加一個Event.ENTER_FRAME到MovieClip並停止它,那將會停止,但它會起到第一幀。有沒有辦法讓它保持停止加載,直到我選擇播放?

+0

你有沒有找到這個解決方案?來自Adobe的關於此事的文檔似乎不存在:-( – 2010-04-01 06:54:43

+0

如果您正在加載在舞臺上具有動畫影片剪輯/精靈的SWF,則需要停止()兒童的動畫 – 2012-06-19 12:25:40

回答

1

我寫了這個簡單的TestCase,它工作正常......加載的SWF很簡單,只是主時間軸上的補間。

package { 
    import flash.display.Loader; 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.events.Event; 
    import flash.net.URLRequest; 

    public class Test extends Sprite 
    { 
     private var loader:Loader = new Loader; 

     public function Test() 
     { 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoaded); 
      loader.load(new URLRequest('testFile.swf'));  
     } 

     public function handleLoaded(event:Event):void 
     { 
      addChild(loader.content); 
      var mc:MovieClip = loader.content as MovieClip ; 
      mc.stop(); 
     } 
    } 
} 
6

它實際上非常接近Jochen Hilgers的建議。但是,在這種情況下,您想要的事件實際上是INIT而不是COMPLETEINIT在內容尚未完全加載但已準備好使用(並將自行開始播放)時觸發。

附上事件與

loader.contentLoaderInfo.addEventListener(Event.INIT, handleReady); 

而且隨着

public function handleReady(initEvent:Event):void{ 
     MovieClip(initEvent.currentTarget.content).stop(); 
} 

處理它,你會發現,你可以作爲一個MovieClip投的currentTargetcontent財產和停止它已經連前附在舞臺上。

需要注意的是它是不是安全使用content酒店爲PROGRESS事件(或之前的INITCOMPLETE事件的任何時間)是很重要的。你會得到一個錯誤,說明對象沒有準備好。

0

我正在尋找類似的問題/解決方案,但我的問題是有點不同。我知道這不是你的問題,但看起來公平分享我的解決方案。當我試圖做

event.currentTarget.stop(); // AS1&AS2 -> BAD swf to import 

與裝載機的內容,我的Flash IDE給我這個錯誤:

「物權停止不flash.display.AVM1Movie發現沒有默認值。」

這發生在我身上,因爲我導入的swf是使用AS1創建的,而不是AS3作爲主要電影(所以我將swf反編譯爲fla格式並使用as3重新編譯,它是After Effects的輸出格式)。現在我知道AVM1和AVM2是代表動作1和2文件的類。