加载子SWF AS3 - > AS3 - 子项无限循环

时间:2012-07-24 21:25:43

标签: actionscript-3 flash flash-cs5

我遇到了将子SWF加载到父级中的问题。加载是非常基本的,一切都应该没问题。问题是当孩子有多个框架时,SWF会无限循环。完成后,孩子将有多个框架和前进/后退按钮,但我已经将它分解为两个框架,每个框架上有不同的图像,没有代码保存为stop(); 我有另一个我没有创建的父(你不想看)会接受AS2 SWF但在AS3上循环,这是整个项目的起源...... 非常感谢任何见解......

这是父母的代码:

var _swfLoader:Loader;
var _swfContent:MovieClip;

loadSWF("test4.swf");

function loadSWF(path:String):void {
   var _req:URLRequest = new URLRequest();
   _req.url = path;

   _swfLoader = new Loader();
   setupListeners(_swfLoader.contentLoaderInfo);

   _swfLoader.load(_req);
}

function setupListeners(dispatcher:IEventDispatcher):void {
   dispatcher.addEventListener(Event.COMPLETE, addSWF);
   dispatcher.addEventListener(ProgressEvent.PROGRESS, preloadSWF);
}

function preloadSWF(event:ProgressEvent):void {
   var _perc:int = (event.bytesLoaded / event.bytesTotal) * 100;
   // swfPreloader.percentTF.text = _perc + "%";
}

function addSWF(event:Event):void {
   event.target.removeEventListener(Event.COMPLETE, addSWF);
   event.target.removeEventListener(ProgressEvent.PROGRESS, preloadSWF);

   _swfContent = event.target.content;
   _swfContent.addEventListener("close", unloadSWF);

   addChild(_swfContent);
}

function unloadSWF(event:Event):void {
   _swfLoader.unloadAndStop();

removeChild(_swfContent);
   _swfContent = null;
}

1 个答案:

答案 0 :(得分:1)

DaveGaur在这里回答了你的问题吗? AS3 Stop external swf

默认情况下,当将MovieClip添加到舞台时,它将播放。如果MovieClip只有一个帧,则看起来不会有所不同。在加载所有帧和子项之前,不会调用Complete事件。 Dave说当第一帧准备好播放时调用INIT事件。因此,对于您的代码,Dave可能会在setupListeners附近提出类似的建议:

dispatcher.addEventListener(Event.INIT, stopContent, false, 0, true);

function stopContent(event:Event) {
    event.target.removeEventListener(Event.INIT, stopContent);
    _swfContent = event.target.content as MovieClip;
    _swfContent.stop();
}