所以我想把它设置为点击一个按钮,它会加载一个新场景并卸载前一个场景。
这是我到目前为止所做的。
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文件?
答案 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)
如果您不删除侦听器,垃圾收集器将无法释放您在每次单击时创建的每个加载程序的内存