我有两个框架。
在第一帧中,您可以单击按钮转到下一帧。在第一帧中,我想将menu1
添加到舞台上一次。如果我们转到下一帧然后回到第一帧,则不应再次创建menu1
,因为它已经在舞台上。
我的问题是,当我从第2帧回到第1帧时,它会不断向舞台添加menu1
个副本。
这是我目前的代码:
stop();
import flash.display.Loader;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.display.Stage;
var menu1:Loader = new Loader();
var request1:URLRequest = new URLRequest ("MENU1.swf");
menu1.load(request1);
if (stage.contains(menu1)){
}
else
{
addChild(menu1);
}
答案 0 :(得分:3)
每次都会继续添加菜单的原因是因为您的if条件始终为false
。
有两行指出为什么会这样:
var menu1:Loader = new Loader();
在上面一行中,您将创建一个全新的Loader()对象并将其分配给var menu1
if (stage.contains(menu1)){
在上面一行中,您正在检查menu1
目前是否在舞台上
由于每次访问此帧时第一行都会运行,因此每次都会创建一个全新的对象。该新对象尚未在舞台上存在(前一个对象),因此if
条件将始终评估为false
。
要解决此问题,您可以执行以下操作:
var menu1:Loader; //just define the var here, don't assign anything yet
//if menu1 doesn't have a value
if(!menu1){
//create a new Loader only if one doesn't exist yet
menu1 = new Loader();
var request1:URLRequest = new URLRequest ("MENU1.swf");
menu1.load(request1);
addChild(menu1);
}