さて、"管理"クラスについては全て説明したので、ついに次のステップへと進むことができます。scenes を作成してゲーム自体を作るのです。 この記事の前パートに記載されたクラス図に記載された中から、まずはスプラッシュスクリーンのscene を作成します。 メニューのリソースを読み込んでいる間、小さなバッジを表示します。 これでプレイヤーは、リソースを読み込む間に真っ暗な画面を見させられることがなくなります。 まずはスプラッシュスクリーンのリソースのみを読み込み、それからスプラッシュスクリーンを表示し、最後に他のリソースを読み込みます。とても簡単です。
public ITextureRegion splash_region; private BitmapTextureAtlas splashTextureAtlas;
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); splashTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR); splash_region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(splashTextureAtlas, activity, "splash.png", 0, 0); splashTextureAtlas.load();
splashTextureAtlas.unload(); splash_region = null;
こうしてスプラッシュ用リソースの読み込み/読み込み解除を司るコードの準備ができました。 それではスプラッシュsceneの作成に移りましょう。詳細は以下です。
package com.matimdev.scene; import org.andengine.engine.camera.Camera; import org.andengine.entity.sprite.Sprite; import org.andengine.opengl.util.GLState; import com.matimdev.base.BaseScene; import com.matimdev.manager.SceneManager.SceneType; /** * @author Mateusz Mysliwiec * @author www.matim-dev.com * @version 1.0 */ public class SplashScene extends BaseScene { @Override public void createScene() { } @Override public void onBackKeyPressed() { } @Override public SceneType getSceneType() { } @Override public void disposeScene() { } }これらのメソッドについて理解するのはとても簡単です。 では、単にscene type(SceneManagerで定義されたenum型の値) の戻り値を返すgetSceneType()内の処理から記述しましょう。
@Override public SceneType getSceneType() { return SceneType.SCENE_SPLASH; }それでは、sceneの作成を制御しましょう。スプラッシュには一つのspriteだけが必要です。
private Sprite splash;
splash = new Sprite(0, 0, resourcesManager.splash_region, vbom) { @Override protected void preDraw(GLState pGLState, Camera pCamera) { super.preDraw(pGLState, pCamera); pGLState.enableDither(); } }; splash.setScale(1.5f); splash.setPosition(400, 240); attachChild(splash);
@Override public void disposeScene() { splash.detachSelf(); splash.dispose(); this.detachSelf(); this.dispose(); }
これはスプラッシュのspriteを破棄し、sceneから取り外します。これで、スプラッシュ用のscene は完成しました。それではactivity内でこれを初期化する必要があります。詳細は以下。
public void createSplashScene(OnCreateSceneCallback pOnCreateSceneCallback) { ResourcesManager.getInstance().loadSplashScreen(); splashScene = new SplashScene(); currentScene = splashScene; pOnCreateSceneCallback.onCreateSceneFinished(splashScene); }
private void disposeSplashScene() { ResourcesManager.getInstance().unloadSplashScreen(); splashScene.disposeScene(); splashScene = null; }
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws IOException { SceneManager.getInstance().createSplashScene(pOnCreateSceneCallback); }
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws IOException { mEngine.registerUpdateHandler(new TimerHandler(2f, new ITimerCallback() { public void onTimePassed(final TimerHandler pTimerHandler) { mEngine.unregisterUpdateHandler(pTimerHandler); // load menu resources, create menu scene // set menu scene using scene manager // disposeSplashScene(); // READ NEXT ARTICLE FOR THIS PART. } })); pOnPopulateSceneCallback.onPopulateSceneFinished(); }
上記で行ったこと:
別のタスク(メニューリソースとメニューsceneの読み込み、メニューsceneの設定)が実行されるまで、スプラッシュスクリーンを表示します。
この手順では、ゲームを実行した後にスプラッシュスクリーンが表示されるでしょう(今のところはずっど表示され続けます)。
次の記事では、メニューシーンを作成して、読み込み後に画面を切り替える方法を説明します。
続きは次の回を参照してください。
前の記事 | 次の記事 |