サイトのトップへ戻る

AndEngineドキュメント 日本語訳

Part 8. ローディングシーンを作成する:

警告: 今この記事を読んでいるあなたが、前ページの記事を2012年1月21日以前に読んで使用している場合、 パート4、パート5、パート6の記事は更新されてさらにリファクタされているので注意してください。 (それらの記事にもう一度目を通して、コードを更新してください。さもないと多くの問題やエラーが発生するでしょう)。これらの更新は必須です!



1. ローディングシーン:
ローディングシーンとは、"読み込み中..."と書かれたtext オブジェクトが一つだけ表示されたシンプルな白いシーンです。 - ゲームシーンとそのリソースを事前読み込みしている間、このシーンを表示します。 パート2記事のクラス図を参照してください (ローディングシーンが表示されている間、メニューテクスチャの読み込みが解除され、ゲームリソースが読み込まれ、ゲームシーンが初期化されます)。このシーンは、ゲームシーンからメニューシーンへも戻る際にも使用されます(その場合は逆に、ゲームシーンとそのテクスチャの読み込みを解除し、メニューテクスチャを読み込みます)。 この簡単なやり方を使用して、メモリ使用量を最小限にできます。
  • まず、LoadingScene という名前のローディングシーンのクラスを作成します。前述のように、拡張としてBaseScene クラスを使用して、未実装メソッドを追加してください。 また、シーン用の白い背景も作成します。
    package com.matimdev.scene;
    
    import org.andengine.entity.scene.background.Background;
    import org.andengine.util.adt.color.Color;
    
    import com.matimdev.base.BaseScene;
    import com.matimdev.manager.SceneManager.SceneType;
    
    public class LoadingScene extends BaseScene
    {
        @Override
        public void createScene()
        {
            setBackground(new Background(Color.WHITE));
        }
    
        @Override
        public void onBackKeyPressed()
        {
            return;
        }
    
        @Override
        public SceneType getSceneType()
        {
            return SceneType.SCENE_LOADING;
        }
    
        @Override
        public void disposeScene()
        {
    
        }
    }
    

気づいたかもしれませんが、onBackKeyPressed() 内ではreturnをしているだけです。これは、アクションを何も実行しないということです。 (今回はローディングシーンを表示している間とプレイヤーが戻るボタンをタッチした場合に何もしたくないため)。



3. "読み込み中..." テキストを作成する:
最初で述べたように、このためには"読み込み中..."と表示されたtextが必要です。 まずはtextを作成するために何らかのfont を読み込む必要があります。 どのfontを使用するかはあなた次第です。
  • ResourcesManager クラスを開いて、Fontの読み込みを司るメソッドを新たに作成しましょう。また、public フィールドにFont を作成します。
    public Font font;
    
    private void loadMenuFonts()
    {
        FontFactory.setAssetBasePath("font/");
        final ITexture mainFontTexture = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
    
        font = FontFactory.createStrokeFromAsset(activity.getFontManager(), mainFontTexture, activity.getAssets(), "font.ttf", 50, true, Color.WHITE, 2, Color.BLACK);
        font.load();
    }
    
    assets/font/ フォルダからfont.ttfという名前のfontを読み込んでいます。
  • それでは、loadMenuResources()メソッド内でfontの読み込みを司るメソッドを実行しましょう。以下のような感じになります:
    public void loadMenuResources()
    {
        loadMenuGraphics();
        loadMenuAudio();
        loadMenuFonts();
    }
    
font の読み込みを司るコードの準備ができました。loading sceneクラスに戻って、Text オブジェクトを作成して画面の中央に配置します。
@Override
public void createScene()
{
    setBackground(new Background(Color.WHITE));
    attachChild(new Text(400, 240, resourcesManager.font, "Loading...", vbom));
}
  • SceneManager内の createMenuScene()で、ローディングシーンを初期化します。
    public void createMenuScene()
    {
        ResourcesManager.getInstance().loadMenuResources();
        menuScene = new MainMenuScene();
        loadingScene = new LoadingScene();
        SceneManager.getInstance().setScene(menuScene);
        disposeSplashScene();
    }
    

今のところはこれで完了です。 まだ使用はしませんが、いずれゲームシーンを作成する必要があるでしょう。後で必要になった場合は、ローディングシーンの表示を司るコードを作成します。 (ローディングシーンが表示されるタイミングを理解するにはコード図を参照してください)

前の記事 次の記事