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并在那里停止,它将停止但它将播放第一帧.有没有办法让它在加载时保持停止直到我选择播放?
它实际上与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事件(或之前的任何时间INIT或COMPLETE事件).您将收到一个错误,指出对象尚未就绪.
我编写了这个简单的 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)