7

嗨,我正在将外部 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 并将其停在那里,这将停止但它会播放第一帧。有没有办法让它在加载时保持停止,直到我选择播放?

4

3 回答 3

6

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

将事件与

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

并处理它

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

您会注意到,您可以将 的content属性currentTarget转换为 MovieClip 并在它附加到舞台之前停止它。

请务必注意,在活动中(或活动之前的任何时间)使用该content物业是不安全的。您将收到一个错误,表明对象尚未准备好。PROGRESSINITCOMPLETE

于 2011-04-06T21:20:13.657 回答
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();
        }
    }
}
于 2010-03-02T18:52:28.800 回答
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 是代表 actionscript 1 和 2 文件的类。

于 2011-06-15T07:16:15.077 回答