AndEngine 何もしないアプリをつくる

SDKはいれとけ

AndEngineをいじっています。よくわかっていないので、勉強しながらブログ書いてます。

今回はAndEngineを用いた空っぽのプロジェクトをつくります。

SDKのインストールなど終え、Androidアプリをビルドできる環境が整っている事が前提条件です。

準備できたら次行きます。

とりあえずHello worldまで

AndEngineの取得

まず、AndEngineが必要です。

ダウンロードして任意のフォルダに保存します(僕はeclipseのworkspaceディレクトリの中にlibディレクトリ作ってその中に入れてます)。 この前のエントリで、zipファイルでダウンロードする説明をしましたが、git cloneで取得した方が利点が多いです。ぜひgitで。

eclipseへのインポート

取得したAndEngineのプロジェクトファイルをelipseへインポートします。 メニューバー[ファイル]→[インポート]

1_import-381x400.png

OSやeclipseのバージョン等によって少し画面は違うかもしれません。画面のとおり、インポートする種別はAndroid Codeを選んで下さい。[次へ]を押下します。

2_import2-385x400.png

[Browse]ボタンから、先程ダウンロードしておいたAndEngineのディレクトリを探して設定します。あとは[完了]押して終わり。

プロジェクト・エクスプローラにAndEngineプロジェクトが出現していれば成功です。

3_AndEngineAdded-400x193.png

プロジェクトの作成

新規プロジェクトを作成します。 メニューバー[ファイル]→[新規]→[プロジェクト]

4_NewProject-400x380.png

『Android Application Project』を選択して[次へ]。

5_NewAndroidApplication-400x377-1.png

アプリの名前やパッケージ名を決めて下さい。ここではBlankAppなどとしてます。

[次へ]。

6_NewAndroidApplication-400x377.png

手順を省くため、『Create custom launcher icon』のチェックは外してます。他は特に変更せずに[次へ]。

7_NewAndroidApplication-400x377.png

特に何もせず(『Blank Activity』のまま)[次へ]で進みます。

8_NewAndroidApplication-400x377.png

Activityとレイアウトファイルの命名です。サンプルプログラムなのでこのままいきます。 [完了]を押下するとプロジェクトが生成されます。この時点でビルドして実行できるプロジェクトになっています。試しに実行すると以下です。

Hello?

9_HelloWorld-345x400.png

AndEngineのリンクから実行まで

AndEngineとリンクする

作成した新規プロジェクト『BlankApp』のプロパティを開きます。 メニュー[ファイル]→[プロパティ]、もしくはプロジェクト・エクスプローラのBlankAppを右クリックして表示されるコンテキストメニューからの[プロパティ]でも同じ。 左のツリーから『Android』を選択。

10_prop-400x279.png

右下のライブラリ設定で『Add』押下でAndEngineを選択して[OK]。

11_AddAndEngine-353x400.png

これでAndEngineライブラリを利用できるようになりました。

最初のコーディング

早速、MainActivity.javaを編集していきます。 先に見せるとできあがりはこれ。ただ灰色の画面になる。

12_BlankApp-345x400.png

package com.example.Blank;  
  
import org.andengine.engine.camera.Camera;  
import org.andengine.engine.options.EngineOptions;  
import org.andengine.engine.options.ScreenOrientation;  
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;  
import org.andengine.entity.scene.Scene;  
import org.andengine.entity.scene.background.Background;  
import org.andengine.entity.util.FPSLogger;  
import org.andengine.ui.activity.SimpleBaseGameActivity;  
  
public class MainActivity extends SimpleBaseGameActivity {  
    private static final int CAMERA_WIDTH = 480;  
    private static final int CAMERA_HEIGHT = 720;  
  
    @Override  
    public EngineOptions onCreateEngineOptions() {  
        final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);  
        return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED,  
                new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);  
    }  
  
    @Override  
    protected void onCreateResources() {  
          
    }  
  
    @Override  
    protected Scene onCreateScene() {  
        final Scene scene = new Scene();  
        scene.setBackground(new Background(0.75f, 0.75f, 0.75f));  
        return scene;  
    }  
}

SimpleBaseGameActivity

  • Line:13,14描画領域の定義です。480×720。固定値に疑問を持つかもしれませんがとりあえずこのままで。
  • Line:12 まず、MainActivityをSimpleBaseGameActivityのサブクラスにします。これにより、最低限以下3つのメソッドを実装する必要があります。

onCreateEngineOptions()

AndEngineへの設定を行います。

  • Line:18Cameraクラスで描画領域の宣言をします。起点座標と幅、高さ。
  • Line:19
    • EngineOptions()
    1. true = フルスクリーンにする。
    2. PORTRAIT_FIXED = 縦画面
    3. RatioResolutionPolicy = 画面の拡大/縮小のオプションで、与えた幅と高さの比率を守って拡大/縮小するようにしています。
    4. 領域サイズを設定したカメラオブジェクト

onCreateResources()

スプライトやサウンドデータの読み込みを行う場所ですが今回は不要なので何もしません。 空実装でオケー。

onCreateScene()

描画の実施です。

  • Line:31背景色を灰色に設定しています。RGBですが値の有効範囲は0〜1のfloatです。 エミュレータの解像度が480×800なので、オプションで定義した領域より広く、少しスキマが開いているのがわかります。

おわり

とりあえず以上でAndEngineを用いた空っぽのプロジェクトができました。

疲れたね(キャプチャして貼り付けるのが)。