[英]AS3 Stop external swf
嗨,我正在將一個外部swf加載到MovieClip中,我希望它停止直到我選擇播放。 目前它在立即加載時播放。
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並在那里停止,它將停止但它將播放第一幀。 有沒有辦法讓它在加載時保持停止直到我選擇播放?
它實際上與Jochen Hilgers建議的非常接近。 但是,在這種情況下,您想要的事件實際上是INIT
而不是COMPLETE
。 當內容尚未完全加載但已准備好使用(並將自行開始播放)時會觸發INIT
。
附上活動
loader.contentLoaderInfo.addEventListener(Event.INIT, handleReady );
並處理它
public function handleReady( initEvent:Event ):void{
MovieClip(initEvent.currentTarget.content).stop();
}
您會注意到,您可以將currentTarget
的content
屬性currentTarget
為MovieClip,並在將其附加到舞台之前將其停止。
請務必注意,在PROGRESS
事件中(或INIT
或COMPLETE
事件之前的任何時間)使用content
屬性是不安全的。 您將收到一個錯誤,指出對象尚未就緒。
我寫了這個簡單的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();
}
}
}
我一直在尋找類似的問題/解決方案,但我的問題差別不大。 我知道這不是你的問題,但看起來很公平地分享我的解決方案。 當我試着做的時候
event.currentTarget.stop(); // AS1&AS2 -> BAD swf to import
使用加載程序的內容,我的Flash IDE向我顯示了這個錯誤:
“在flash.display.AVM1Movie上找不到屬性停止,並且沒有默認值。”
這發生在我身上,因為我導入的swf是使用AS1而不是AS3作為主電影創建的(所以我將swf反編譯為fla並使用as3重新編譯,它是After Effects的輸出)。 現在我知道AVM1和AVM2是代表actionscript 1和2文件的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.