通过按钮单击卸载swf文件

时间:2015-03-05 15:27:51

标签: actionscript-3 flash

所以我想把它设置为点击一个按钮,它会加载一个新场景并卸载前一个场景。

这是我到目前为止所做的。

staart.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);

function fl_MouseClickHandler(event:MouseEvent):void
{
function loadSWF(swfURL){
var myLoader:Loader = new Loader();
var mySWF:URLRequest = new URLRequest(swfURL);
myLoader.contentLoaderInfo.addEventListener
(Event.COMPLETE,onCompleteHandler);
myLoader.contentLoaderInfo.addEventListener
(ProgressEvent.PROGRESS,onProgressHandler);
myLoader.load(mySWF);

}

function onCompleteHandler(loadEvent:Event){    
  addChild(loadEvent.currentTarget.content);
  loadEvent.currentTarget.content.gotoAndStop(swfFrame);
}

function onProgressHandler(myProgress:ProgressEvent){
var percent:Number = 
Math.round(myProgress.bytesLoaded/myProgress.bytesTotal*100);
trace(percent+"% loaded");
}


}
var swfFrame:Number= 1;
loadSWF("home.swf");

}

是否可以通过新加载的swf文件卸载特定的swf文件或以前的swf文件?

2 个答案:

答案 0 :(得分:0)

您应该为swf创建一个变量。

将此添加到您的代码中:

var mc:MovieClip = new MovieClip();
// Adds the movie clip at initialization.
addChild(mc);

并修改你的onCompleteHandler方法,如下所示:

function onCompleteHandler(loadEvent:Event){
  // Changes the content of your movie clip.
  mc = loadEvent.currentTarget.content;
  mc.gotoAndStop(swfFrame);
}

答案 1 :(得分:0)

shawn给了你正确的答案,但你的代码还有其他2个问题: 元素staart中存在拼写错误并且可能存在内存泄漏,因为您添加了事件侦听器而未删除它们。您应该在onCompleteListener函数中添加以下两行:

loadEvent.currentTarget.removeEventListeners(Event.COMPLETE,onCompleteHandler)
loadEvent.currentTarget.removeEventListeners(ProgressEvent.PROGRESS,onProgressHandler)

如果您不删除侦听器,垃圾收集器将无法释放您在每次单击时创建的每个加载程序的内存