Actionscript 3 AS3加载多个外部主权财富基金并将其关闭

Actionscript 3 AS3加载多个外部主权财富基金并将其关闭,actionscript-3,flash,Actionscript 3,Flash,我试图在一个主SWF中加载多个外部SWF 我从主swf开始。现在我需要将4个游戏链接到它 我已经创建了4个不同的加载程序,我让它为每个游戏加载到不同的框架中。例如,当我转到第1帧时,它将加载game1。我在每个游戏框架中使用的代码是: public function LoadGame1(evt:MouseEvent):void { trace("load game1"); this.gotoAndPlay("Game1"); var url

我试图在一个主SWF中加载多个外部SWF

我从主swf开始。现在我需要将4个游戏链接到它

我已经创建了4个不同的加载程序,我让它为每个游戏加载到不同的框架中。例如,当我转到第1帧时,它将加载game1。我在每个游戏框架中使用的代码是:

    public function LoadGame1(evt:MouseEvent):void {
        trace("load game1");
        this.gotoAndPlay("Game1");
        var url:URLRequest = new URLRequest("game1.swf"); 
        game1Loader.load(url);     
        addChild(game1Loader);

    }       
游戏2与游戏1相同,但游戏1将是游戏2等

现在我的问题是,当我结束每一场比赛,去另一场比赛时,它不起作用。我无法加载其他游戏或重新加载它。当我返回菜单时,我使用:

    public function backFunc(evt:MouseEvent):void {
        trace("menu");
        myLoader.unload();
        game1Loader.unload();
        game2Loader.unload();
        game3Loader.unload();
        game4Loader.unload();
        this.gotoAndPlay("Menu");

    }
我假设它与卸载有关-它卸载所有内容并关闭加载程序。我试过removeChild(game1Loader)等,但不起作用?游戏将关闭,它将返回菜单,但我将无法回到游戏或加载另一个


请帮助:(

Flash时间线有点像静态机器;从一帧移动到另一帧将在该帧(每次)运行所有文档代码。它还将内容的值重置为设计时的状态(因此,帧=设计+代码).由于这种模式可能会带来麻烦,我强烈建议您在一个框架内完成所有设计和代码

您编写示例代码的方式似乎意味着您正在为每个游戏加载程序编写自定义函数。您可以通过在同一个函数中驱动所有btn事件,并根据一些不同的属性(如它们的名称)加载相应的游戏来统一这一点

最后,我怀疑你的加载程序停止工作的原因是你已经卸载并从后台移除了它们。这些东西会被垃圾收集。与其让加载程序成为一个全局对象,不如在每次调用loadGame()时创建一个新的加载程序

// We'll store our buttons in an array to make it easier to register for events.
var btns:Array = [
    btn_Load1,
    btn_Load2,
    btn_Load3
]

// Now cycle over them in bind to our listener
for each (var btn:MovieClip in btns) {
    btn.addEventListener("mouseUp", btnEvents);
}

function btnEvents(e:MouseEvent):void {
    // With one event listener, we can sort out each condition
    switch (e.currentTarget.name) {
        case "btn_Load1":
            loadGame("game1.swf")
            break;
        case "btn_Load2":
            loadGame("game2.swf")
            break;
        case "btn_Load3":
            loadGame("game3.swf")
            break;
    }
}

function loadGame(url:String):void {
    // Now we only have to write our loader code once (for all buttons)
    trace("Loading " + url);

    // Because we're unloading our swfs (and unloaded assets get garbage collected),
    // we'll want to make a new loader each time we call a load op
    var loader:Loader = new Loader();
    loader.name = "current_game";
    loader.load(new URLRequest(url));
    addChild(loader);
}

function backFunc(evt:MouseEvent):void {
    // Dynamically find our current game, and unload it.
    trace("menu");
    getChildByName("current_game").unload();
}