在子 swf 的最后一帧卸载子 swf

Posted

技术标签:

【中文标题】在子 swf 的最后一帧卸载子 swf【英文标题】:Unload child swf on last frame of child swf 【发布时间】:2011-05-06 03:33:30 【问题描述】:

使用 AS3 我在我的代码中有一个按钮来停止和删除 swf,但我还想在它自动播放最后一帧时卸载一个子 swf - 使用按钮。

这是我在主时间线上的代码:

var loader:Loader;
var closer:close;

norton_btn.addEventListener(MouseEvent.CLICK, NortonDemo);
function NortonDemo(e:MouseEvent):void 

 var req:URLRequest = new URLRequest("norton.swf");
 loader = new Loader();
 loader.load(req);
 container_mc.addChild(loader);
 closer = new close();
 closer.x = 415;
 closer.y = -294;
 addChild(closer);
 closer.addEventListener(MouseEvent.CLICK, closeNortonDemo);



function closeNortonDemo(e:MouseEvent):void 


 closer.removeEventListener(MouseEvent.CLICK, closeNortonDemo);
 removeChild(closer);
 container_mc.removeChild(loader);
 loader.unloadAndStop();


///////////////////////

现在,我需要添加或更改此代码并添加到 NortonDemo 最后一帧的代码以完成我想要做的事情?

谢谢!

【问题讨论】:

【参考方案1】:

您需要在播放最后一帧时删除加载的 swf 吗? 我会像你一样做:

loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
addChild(loader);
loader.load(new URLRequest("norton.swf"));

private function onInit(e:Event):void 
   (loader.getChildAt(0) as MovieClip).addEventListener(Event.ENTER_FRAME, onFrame);


private function onFrame(e:Event):void 
    if((loader.getChildAt(0) as MovieClip).totalFrames == (loader.getChildAt(0) as MovieClip).currentFrame)
        (loader.getChildAt(0) as MovieClip).removeEventListener(Event.ENTER_FRAME, onFrame);//the only thing that might cause a problem imho
         loader.removeChildAt(0);
         loader.unload();
    

【讨论】:

您好,感谢您的快速回复。尝试您的代码时出现以下错误:1013:私有属性只能用于类属性定义。

以上是关于在子 swf 的最后一帧卸载子 swf的主要内容,如果未能解决你的问题,请参考以下文章

在外部加载的 swf 中设置输入字段的焦点

停止动态加载的 .SWF 循环,然后移动到主时间线上的下一帧

HTML页面可以设置swf文件循环播放吗

从具有不同于默认值的另一个 swf 中打开一个 swf 文件

退出框架时卸载 swf

从 Flash 中的 swf 文件外部加载 xml 文件