Actionscript 3 AS3停止外部swf

Actionscript 3 AS3停止外部swf,actionscript-3,flash,external,loader,Actionscript 3,Flash,External,Loader,嗨,我正在将一个外部swf加载到MovieClip中,我希望它停止,直到我选择播放。目前它在加载后立即播放 var mc:MovieClip; var swfLoader:Loader = new Loader(); swfLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, eventLoaded); var request:URLRequest; request = new URLRequest("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并在那里停止,这将停止,但它将播放第一帧。有没有办法让它在加载时保持停止,直到我选择播放?

我编写了这个简单的测试用例,它工作得很好。。。加载的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();
        }
    }
}

事实上,这与Jochen Hilgers的建议非常接近。但是,在本例中,您想要的事件实际上是
INIT
,而不是
COMPLETE
<代码>初始化在内容尚未完全加载但已准备好使用时触发(并将开始独立播放)

将事件附加到

loader.contentLoaderInfo.addEventListener(Event.INIT, handleReady );
然后用它来处理

public function handleReady( initEvent:Event ):void{
        MovieClip(initEvent.currentTarget.content).stop();
}
您会注意到,您可以将
currentTarget
content
属性强制转换为MovieClip,甚至在它连接到舞台之前就停止它


请务必注意,在
进度
事件(或
初始化
完成
事件之前的任何时间)中使用
内容
属性是不安全的。您将得到一个错误,大意是对象尚未准备就绪。

我正在寻找类似的问题/解决方案,但我的问题几乎没有什么不同。我知道这不是你的问题,但公平地分享我的解决方案。当我试着去做

    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文件的类。

您找到过解决方案吗?Adobe关于这个问题的文档似乎不存在:-(如果您正在加载舞台上有动画电影嘴唇/精灵的SWF,那么您需要停止()儿童动画