AndEngine ではもう一つ優れた機能、 MenuScene (Sceneの拡張) が使用できます。 このクラスを使うことで、素晴らしい見栄えやアニメーションメニューを簡単に作成できます。
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 を実装して未実装のメソッドを追加する必要があります。
@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を使用する準備ができました。