AS3停止外部swf

Rob*_*bin 7 flash external loader actionscript-3

嗨,我正在将一个外部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 ();
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试将一个Event.ENTER_FRAME添加到movieclip并在那里停止,它将停止但它将播放第一帧.有没有办法让它在加载时保持停止直到我选择播放?

Dav*_*uer 6

它实际上与Jochen Hilgers建议的非常接近.但是,在这种情况下,您想要的事件实际上是INIT而不是COMPLETE. INIT当内容尚未完全加载但已准备好使用(并将自行开始播放)时触发.

附上活动

loader.contentLoaderInfo.addEventListener(Event.INIT, handleReady );
Run Code Online (Sandbox Code Playgroud)

并处理它

public function handleReady( initEvent:Event ):void{
        MovieClip(initEvent.currentTarget.content).stop();
}
Run Code Online (Sandbox Code Playgroud)

您会注意到,您可以将content属性currentTarget作为MovieClip进行转换,并在将其附加到舞台之前将其停止.

需要注意的是它是不是安全使用是很重要的content财产的PROGRESS事件(或之前的任何时间INITCOMPLETE事件).您将收到一个错误,指出对象尚未就绪.


joc*_*hil 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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)