您好我正在将一个外部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并在那里停止,它将停止但它将播放第一帧。有没有办法让它在加载时保持停止直到我选择播放?
答案 0 :(得分: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
事件中(或PROGRESS
或INIT
事件之前的任何时间)使用COMPLETE
属性并不安全。您将收到一个错误,指出对象尚未就绪。
答案 1 :(得分: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();
}
}
}
答案 2 :(得分: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文件的类。