0

読みやすくするためにこのコードを簡略化しました

LevelSelect というクラスが 1 つ、Game というクラスが 1 つ、NavButtons というクラスが 1 つあります。*/

The code below i have added levelSelect MovieClip to the stage and 
added level numbers to level boxes
onclick it goes to my selected level.

public class LevelSelectPage extends Game
{
    public var levelSelectScreen:level_selection;
    public var list:Array;
    // add movieClips to L1,L2 etc...
    public static var Level:String = "No Level Selected";
    public static var shared:SharedObject;


    public function LevelSelectPage( ) 
    {
        setUpLevelSelect(); 
    }

    public function setUpLevelSelect():void
    {
        shared = SharedObject.getLocal("savegame");
        shared.clear(); // remove when game completed
        if (shared.data.level_passed == undefined)
        {
            shared.data.level_passed = 3;
        }
        if (shared.data.playing_level == undefined)
        {
            shared.data.playing_level = "L0";
        } 
        else
        {
            shared.data.playing_level = "L0";
        }

        levelSelectScreen = new level_selection();

        addChild(levelSelectScreen);

        AddMovieClipsForLevels(); 
    }

    public function AddMovieClipsForLevels():void 
    {
        // array of movieClip instances... level pictures.
        list  = [
                        levelSelectScreen.L1,
                        levelSelectScreen.L2,
                        levelSelectScreen.L3
                ];

        list.forEach(setupSquare);  

    }

    public function setupSquare(square:MovieClip, index:int, array:Array):void
    {
        // add numbers on top of level images

        // get numbers of the levels... as index starts from 0, add 1
        var LevelNumber:Number = index + 1;

        // convert number to string
        var imageLevelNumber:String = LevelNumber.toString();
// set textfield     // get childs instance name    
             var     insertlevelNumber:TextField 
            =  square.getChildByName("levelNumberText") as TextField;
        // output text
        insertlevelNumber.text = imageLevelNumber;

    }

    public function onSquareClick(me:MouseEvent):void
    {

        switch(me.currentTarget.name)
        {
            case "L1":   // trace("level 1 was selected");
            // startGame();
            break;  

        }

    }

}
}

public class Game
{
    // imagen a blank screen, it doesn't matter
}

以下のコード - ナビゲーション ボタンをゲーム ステージに追加し、戻るボタンをクリックするとトレース ステートメントが出力されますが、代わりに LevelSelectPage を再度実行するにはどうすればよいですか?

public class NavButtons
{
    private var m_NavDisplayIcon:ReferenceArray;
    private var m_stage:Stage;


    public function NavButtons( stage:Stage )
    { 
        // add navigation to stage
        m_stage = stage;

        m_NavDisplayIcon = new ReferenceArray( navDisplayFla );

        var icon:navDisplayFla = new navDisplayFla( );

            icon.x = 5;
            icon.y = 5;

            m_NavDisplayIcon.Add( icon );

            m_stage.addChild( icon );

        // addEventlisteners for backButton, pause game and information

        icon.backIcon.addEventListener(MouseEvent.CLICK,    goBackToLevelSelectPage);
        icon.pauseIcon.addEventListener(MouseEvent.CLICK, pauseGame);
        icon.informationIcon.addEventListener(MouseEvent.CLICK,     showInformation);
    }

    public function goBackToLevelSelectPage( event:MouseEvent ):void
    {

        //var levelSelectScreen:level_selection = new LevelSelectPage();
        //m_stage.addChild(levelSelectScreen);
        trace("you pressed the backButton");

    }
4

1 に答える 1

0

ステージは、付箋を貼れる白紙のようなものだと考えてください。したがって、ゲームを開始するとき、紙は空白で、レベル選択画面を含むこの空白の「ステージ」に付箋を追加します。

これを行うには、ムービークリップまたはスプライトをステージに追加するか、1 つのコンテナーをステージに追加して、すべての追加要素を追加します (コンテナーを削除すると、コンテナー内のすべてが削除されるため、後で簡単になります)。同様に一度に)。

ここで、プレイヤーがレベル選択画面のボタンをクリックしたときに、次のことを行う必要があります。

  1. 紙の上にある現在の付箋を取り除きます (つまり、レベル選択画面のあるコンテナを取り除きます)。
  2. プレイヤーがクリックしたレベルを含む新しい付箋を配置します (つまり、別のコンテナをステージに追加し、新しいレベルのすべての要素をそこに追加します)。

ユーザーがレベル選択画面に戻りたい場合は、現在紙にある付箋をもう一度削除し、レベル選択画面を含む付箋を追加するだけです。

于 2013-05-16T15:52:20.543 に答える