重新访问框架时仅将 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);
}