ここまできてやっとHelloWorld。
1.プロジェクトにビットマップフォントを追加
・asset/fontフォルダを作成
・ビットマップフォント(font.fnt,font_0.png)をコピー
フォントをコピー |
こんな感じ。
package com.example.andenginetest; 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.text.Text; import org.andengine.entity.text.TextOptions; import org.andengine.opengl.font.BitmapFont; import org.andengine.ui.activity.SimpleBaseGameActivity; import org.andengine.util.HorizontalAlign; import org.andengine.util.color.Color; public class MainActivity extends SimpleBaseGameActivity { private final int CAMERA_WIDTH = 480; private final int CAMERA_HEIGHT = 800; @Override public EngineOptions onCreateEngineOptions() { // 描画範囲のインスタンス化 Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); EngineOptions eo = new EngineOptions( // タイトルバー非表示 true, // 縦画面固定 ScreenOrientation.PORTRAIT_FIXED, // 縦横比保持したまま最大まで拡大 new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), // 描画範囲 camera); return eo; } @Override protected void onCreateResources() { } @Override protected Scene onCreateScene() { Scene scene = new Scene(); // 背景真っ白 scene.setBackground(new Background(Color.WHITE)); // ビットマップフォント読み込み BitmapFont font = new BitmapFont( getTextureManager() //TextureManager , getAssets() //AssetManager , "font/font.fnt" //フォントの場所を指定 ); font.load(); //テキストのインスタンスを作成 Text text = new Text( 20 //X座標 , 20 //Y座標 , font //フォント , "Hello World!!" //描画文字列 , 20 //最大文字数 //オプション(左寄せ) , new TextOptions(HorizontalAlign.LEFT), getVertexBufferObjectManager() ); //SceneにTextを追加 scene.attachChild(text); return scene; } }
フォント読み込んでTextインスタンスにして
Sceneにドーン。って感じ。
3.実行
実行画面 |
おまけ:
ビットマップフォント作った後にfntファイルの1,2行目を修正してないと下記エラー出るよ。
java.lang.NumberFormatException: Invalid int: "1 outline=0"
05-06 18:13:31.879: E/AndEngine(7286): MainActivity.onCreateScene failed. @(Thread: 'GLThread 17752') 05-06 18:13:31.879: E/AndEngine(7286): java.lang.NumberFormatException: Invalid int: "1 outline=0" 05-06 18:13:31.879: E/AndEngine(7286): at java.lang.Integer.invalidInt(Integer.java:138) 05-06 18:13:31.879: E/AndEngine(7286): at java.lang.Integer.parse(Integer.java:375) 05-06 18:13:31.879: E/AndEngine(7286): at java.lang.Integer.parseInt(Integer.java:366) 05-06 18:13:31.879: E/AndEngine(7286): at java.lang.Integer.parseInt(Integer.java:332) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.opengl.font.BitmapFont$BitmapFontInfo.<init>(BitmapFont.java:610) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.opengl.font.BitmapFont.<init>(BitmapFont.java:211) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.opengl.font.BitmapFont.<init>(BitmapFont.java:176) 05-06 18:13:31.879: E/AndEngine(7286): at com.example.andenginetest.MainActivity.onCreateScene(MainActivity.java:62) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.ui.activity.SimpleBaseGameActivity.onCreateScene(SimpleBaseGameActivity.java:48) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.ui.activity.BaseGameActivity$3.onCreateResourcesFinished(BaseGameActivity.java:169) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.ui.activity.SimpleBaseGameActivity.onCreateResources(SimpleBaseGameActivity.java:43) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.ui.activity.BaseGameActivity.onCreateGame(BaseGameActivity.java:181) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.ui.activity.BaseGameActivity.onSurfaceCreated(BaseGameActivity.java:110) 05-06 18:13:31.879: E/AndEngine(7286): at org.andengine.opengl.view.EngineRenderer.onSurfaceCreated(EngineRenderer.java:80) 05-06 18:13:31.879: E/AndEngine(7286): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1494) 05-06 18:13:31.879: E/AndEngine(7286): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
疑問:
- TextureManagerって何するやつ
- AssetManagerって何するやつ
- TextOptions何があるの
- VertexBufferObjectManagerって何する奴