如何在动作3中再次显示游戏菜单?

时间:2014-01-19 11:55:31

标签: actionscript-3 flash restart

我想做的是在as3中制作游戏。到目前为止我所做的是我制作了一个游戏并从该.swf文件中加载了一个名为" startScreen.swf"的菜单。从外部swf文件,我可以导航到我的storyscreen,instructionssscreen和我的游戏。 storyscreen和instructionsscreen都是外部swf文件。

我想要做的是当我按下ESC时,我想卸载我的swf文件并再次显示我的菜单。但问题是当我按下ESC我的开始屏幕显示但是当我按下游戏时,它不会再次卸载我的启动屏幕而只是播放它。

有没有办法在游戏开始之前加载我的所有swf文件,当我想要返回到开始屏幕时,他们只是卸载并再次加载我的开始屏幕。或者另一种选择是重新启动我最喜欢的游戏。

public var Player:MovieClip

private var leftKeyIsDown:Boolean;
private var RightKeyIsDown:Boolean;

private var aMissileArray:Array;
private var aEnemyArray:Array;

public var scoreTxt:TextField;
public var ammoTxt:TextField;
public var MenuEnd:EndGameScreen;
public var menuAgain:EndGameScreen;

private var MenuStart:mcStartGameScreen;
private var MenuStory:mcStartGameScreen;
private var MenuInstructions:mcStartGameScreen;

private var nScore:Number;
private var nAmmo:Number;
private var tEnemyTimer:Timer;

private var screens:Object = {
    "SHOW_INSTRUCTIONS":{
        "loader":new Loader(),
        "url":new URLRequest("instructionsScreen.swf")
    },
    "SHOW_STORY":{
        "loader":new Loader(),
        "url":new URLRequest("storyScreen.swf")
    },
    "START_GAME":{
        "loader":new Loader(),
        "url":new URLRequest("startScreen.swf")
    }
}
public function FirstGame() 
{
    //Create a loader object
    var startLoader:Loader = new Loader();
    //add event listener to listen for the complete event
    startLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, startLoaded);
    //load our loader object
    startLoader.load(new URLRequest("startScreen.swf"));
}

public function startLoaded(e:Event):void 
{
    MenuEnd.hideScreen();
    Player.visible = false;
    scoreTxt.visible = false;
    ammoTxt.visible = false;

    //get a reference to the loaded movieclip
    MenuStart = e.target.content as mcStartGameScreen;
    //listen for start game event
    MenuStart.addEventListener("START_GAME", playGameAgain);
    //add it to the stage
    addChild(MenuStart);

    //get a reference to the loaded movieclip
    MenuStory = e.target.content as mcStartGameScreen;
    //listen for start game event
    MenuStory.addEventListener("SHOW_STORY", storyGameScreen);
    //add it to the stage
    addChild(MenuStory);

    //get a reference to the loaded movieclip
    MenuInstructions = e.target.content as mcStartGameScreen;
    //listen for start game event
    MenuInstructions.addEventListener("SHOW_INSTRUCTIONS", instructionsGameScreen);
    //add it to the stage
    addChild(MenuInstructions);
}

private function instructionsGameScreen(e:Event):void 
{
    var instructionsLoader:Loader = new Loader();
    var url:URLRequest = new URLRequest("instructionsScreen.swf");
    instructionsLoader.load(url);
    addChild(instructionsLoader);

    stage.addEventListener(KeyboardEvent.KEY_UP, esc);
}

private function storyGameScreen(e:Event):void 
{
    var storyLoader:Loader = new Loader();
    var url:URLRequest = new URLRequest("storyScreen.swf");
    storyLoader.load(url);
    addChild(storyLoader);

    stage.addEventListener(KeyboardEvent.KEY_UP, esc);
}

private function esc(e:KeyboardEvent):void 
{
    if (e.keyCode == 27) 
    {
        //fscommand("quit");

        //(new URLRequest(stage.loaderInfo.url), "FirstGame.swf");

    }
}

private function playGameAgain(e:Event):void 
{

    //initialize variables
    aMissileArray = new Array();
    aEnemyArray = new Array();
    nScore = 0;
    nAmmo = 20;
    Player.x = 262,95
    Player.y = 323,30

    Player.visible = true;
    scoreTxt.visible = true;
    ammoTxt.visible = true;

    MenuStart.hideScreen();


    MenuEnd.addEventListener("PLAY_AGAIN", playGameAgain);
    MenuEnd.hideScreen();

    updateScoreText();
    updateAmmoText();

    //trace("First Game Loaded");
    stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
    stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);

    stage.addEventListener(Event.ENTER_FRAME, gameLoop)

    //creat an timer object
    tEnemyTimer = new Timer(1000)
    //listen for the timer ticks/intervals
    tEnemyTimer.addEventListener(TimerEvent.TIMER, addEnemy)
    //start our timer
    tEnemyTimer.start();

}

按ESC时,您可以通过storyscreen看到。空无一物。在那里,我想重新启动或加载我的启动屏幕并卸载其他swf文件。

0 个答案:

没有答案