サイトのトップへ戻る

AndEngineドキュメント 日本語訳

Menu Sceneを作成する:

AndEngine ではもう一つ優れた機能、 MenuScene (Sceneの拡張) が使用できます。 このクラスを使うことで、素晴らしい見栄えやアニメーションメニューを簡単に作成できます。



1. Menu Sceneを作成する:
サンプルでは、二つのSpriteMenuItemを付けたMenuScene を作成します。これでスケールアニメーション (タッチするとメニュー項目が大きくなる)もできます。
private MenuScene menuScene;

private MenuScene createMenu()
{
    menuScene = new MenuScene(camera);
    
    final IMenuItem optionsMenuItem = new ScaleMenuItemDecorator(new SpriteMenuItem(0, region2, vbo), 2, 1);
    final IMenuItem playMenuItem = new ScaleMenuItemDecorator(new SpriteMenuItem(1, region1 vbo), 2, 1);
    
    menuScene.addMenuItem(optionsMenuItem);
    menuScene.addMenuItem(playMenuItem);
    
    menuScene.buildAnimations();
    menuScene.setBackgroundEnabled(false);
    
    menuScene.setOnMenuItemClickListener(this);
    return menuScene;
}

前で述べたように、ScaleMenuItemDecorator を使用してアニメーションを作成しています。 このエンジンには他にもdecoratorが用意されていますが、自分独自のdecoratorを簡単に作成することもできます。 simply take a look at how does those decorators work. ほとんど労力をかけずに、MenuItemDecorator と EntityModifierを組み合わせた素晴らしいアニメーションを作成することができます。

新しいSpriteMenuItemを作成する際には最初のパラメータ引数にint型の値を設定しなければなりません。 これはこのボタンのIDで、後から特定のメニューアイテムを参照することができます。

また、 setOnMenuItemClickListenerを使ってメニュー項目をタッチした時のイベントを追加することができます。 IOnMenuItemClickListener を実装して未実装のメソッドを追加する必要があります。



2. Menu Click Listenerを使用する:
前で述べたように、IOnMenuItemClickListener インタフェースを実装しなければなりません。 eclipse の場合は、実装していないメソッドを実装するように要求してきます。
@Override
public boolean onMenuItemClicked(MenuScene pMenuScene, IMenuItem pMenuItem, float pMenuItemLocalX, float pMenuItemLocalY)
{
    handleButtonActions();
    
    switch(pMenuItem.getID())
    {
        case 0:
            //action
            return true;
        case 1:
            //action
            return true;
        default:
            return false;
    }
}

クリックされたメニュー項目のIDを基にswitchの分岐を行うので、クリックされたメニュー項目ごとに簡単に異なるアクションを実行できます。 これで完了ですMenuSceneを使用する準備ができました。