それでは、画面の作成までの準備です。ここまでに Moai SDK で moai-dev/ant/untitled-host ディレクトリが作成されており、実行できるプロジェクトがあるとします。
バージョン管理の開始
まず、moai-dev から必要なファイルだけをコピーしましょう。Android で実行する場合、untitled-host/build/project フォルダがあれば動作できるので、このフォルダを別の場所にコピーしてバージョン管理の対象とします。project というディレクトリ名は自由に変更して問題ありません。また、作成中のプログラムをホスト環境で実行するために moai-dev/cmake/moai/moai バイナリを(例えば) $(HOME)/bin などにコピーします。
以降は、主に project/assets/lua/ 以下の Lua スクリプトを編集します。
アプリ名、アイコンの変更
Android で実行したときのアプリ名は project/res/values/strings.xml で管理されています。このファイルの app_name には、日本語も O.K. です。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">ずん子と封印の城</string> </resources>
次にアイコンですが、これは project/res/drawable-* の各ディレクトリに、それぞれの大きさの icon.png という名前の PNG 画像を作成して配置すれば変更できます。
- drawable-ldpi … 36 x 36
- drawable-mdpi … 48 x 48
- drawable-hdpi … 72 x 72
- drawable-xhdpi … 96 x 96
resource/icon.png という 96×96 のファイルを用意し、それを ImageMagic を使って縮小しながら ref ディレクトリに配置する Makefile は、例えば以下のようになります。
image.png (96×96) を縮小しながらコピーする Makefile
RES_DIR = ../source/res all : icons clean : icons : \ ??? $(RES_DIR)/drawable-ldpi/icon.png \ ??? $(RES_DIR)/drawable-mdpi/icon.png \ ??? $(RES_DIR)/drawable-hdpi/icon.png \ ??? $(RES_DIR)/drawable-xhdpi/icon.png \ $(RES_DIR)/drawable-ldpi/icon.png : icon.png ??? convert -geometry 36x36 icon.png $@ $(RES_DIR)/drawable-mdpi/icon.png : icon.png ??? convert -geometry 48x48 icon.png $@ $(RES_DIR)/drawable-hdpi/icon.png : icon.png ??? convert -geometry 72x72 icon.png $@ $(RES_DIR)/drawable-xhdpi/icon.png : icon.png ??? cp $< $@
ウィンドウの作成
画面のアスペクト比が異なる場合を考慮したコードにします。実機デバイスの画面の解像度は MOAIEnvironment.horizontalResolution と MOAIEnvironment.verticalResolution で取得しています。
画面解像度についての Moai フォーラム
http://getmoai.com/forums/get-screen-resolution-sdk-1-2-t894/
ウィンドウを作成するコード例
-- 画面の初期化 function initialize_screen () local screen_width = MOAIEnvironment.horizontalResolution or World_width local screen_height = MOAIEnvironment.verticalResolution or World_height MOAISim.openWindow ( "Zunko Castle", screen_width, screen_height ) -- アスペクト比が異なるデバイスへの対応 local world_aspect = World_width / World_height local screen_aspect = screen_width / screen_height local view_width, view_height if screen_aspect > world_aspect then view_height = screen_height view_width = world_aspect * view_height else view_width = screen_width; view_height = view_width / world_aspect end local view_offset_x = 0 if view_width < screen_width then view_offset_x = (screen_width - view_width) / 2 end local view_offset_y = 0 if view_height < screen_height then view_offset_y = (screen_height - view_height) / 2 end -- ビューの作成 local viewport = MOAIViewport.new () viewport:setSize ( view_width, view_height ) viewport:setOffset ( view_offset_x, view_offset_y ) viewport:setScale ( World_width, -World_height ) return viewport end
このコード中の World_width, World_height は config.lua の中で定義したものを利用しています。
デバッグメッセージの確認
追記ですが、Eclipse を使ってコードを実機で実行する場合 Eclipse の LogCat に Lua コード中に記述した print() の内容が出力されるようになっています。簡単なデバッグメッセージの確認には LogCat が便利です。
(私は Eclipse はあまり使わないので、今まで知りませんでした)
まとめ
Android の実機において Moai SDK を使ってウィンドウを表示するまでをまとめてみました。何か疑問があれば遠慮なくコメントにてお知らせ下さい。