重新访问框架时仅将 AddChild 添加到舞台一次
AddChild to the stage only once when revisiting frame
我有两个相框。
在第一帧你可以点击一个按钮去下一帧。在第一帧中,我只想将 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);
}
每次仍然添加菜单的原因是因为您的 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);
}
我有两个相框。
在第一帧你可以点击一个按钮去下一帧。在第一帧中,我只想将 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);
}
每次仍然添加菜单的原因是因为您的 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);
}