Updated at: 2014-01-06
Flash Builder での開発メモ
プロジェクトのおすすめファイル構成
- 基本的にワンソースでいけるよ、というのがウリの AIR だが、 プラットフォームごとにプロジェクトを分けておくのが無難
- Native Extension とかやると分けざるを得ないしね
各 project の Main から、カスタマイズの処理を走らせた後に 共通ソースの Main をキックする形にする
Your_Git_Repository/ ├── asset/ │ ├── asset/ │ └── workfile/ │ ├── core-src/ │ └── your_game_package/ │ ├── lib/ │ └── *.swc │ ├── projects/ │ ├── android-project/ │ ├── local-debug-project/ │ ├── ios-project/ │ └── web-project/ │ ├── Makefile └── build/
- project 以下のファイルはこんな感じになる
- ここに FlashBuilder 用の .project などが入る
DebugMain.as は core-src/ 以下の共通の Main を new する
projects/local-debug-project/ ├── .actionScriptProperties ├── .project ├── .settings ├── bin-debug │ └── (Files you built) │ └── src ├── DebugMain-app.xml ├── DebugMain-config.xml └── DebugMain.as
Git 管理
- .project ファイルは git 管理しなければならない
- ここにソースパスやライブラリパスが書かれるから
- でもファイルパスって人によって変わっちゃうよね。どうするの?
- リポジトリまでのベースパスを表すパス変数の名前を決める
- 例えば HOGE_ROOT でいくとする
- 各個人が FlashBuilder のワークスペースに HOGE_ROOT というパス変数を作る
- HOGE_ROOT = 自分がリポジトリを clone したパス、とする
- .project 内のパスは、HOGE_ROOT を使ってリポジトリからの相対パスで指定する
- HOGE_ROOT はワークスペースの .metadata 以下の深いところに保存されている
- これは git 管理しない
ワークスペースとは
- 文字通り Flash Builder の作業場
- ここに自分が作業したいプロジェクトを複数読み込む
- 一瞬、複数の project をまとめた上位のコンテナに見えるが、そうではなくて個人ごとに持つもの
- 複数のワークスペースは同時に開けない
- ワークスペース切り替えると、Flash Builder 再起動するしね
- というか基本的にワークスペースを切り替えることはあまり想定されていないと思う
- エディタのカラーの設定とかもワークスペースレベルに保存されている
Flash Builder でプロジェクト新規作成するときの作業
リポジトリ用のパス変数作成
- リポジトリのルートのパスのパス変数名を決める。たとえば PIYO_ROOT とする
- PIYO_ROOT というパス変数を作る
- Flash Builder -> 環境設定 -> 一般 -> ワークスペース -> リンクされたリソース
- PIYO_ROOT という名前でリポジトリまでのパスを指定
- この変数は Git 管理しないので個々人で設定してもらう必要がある
- ただしここで決めた PIYO_ROOT という名前は .project の中に入って Git 管理される
プロジェクトの新規作成と、パスの設定
- ファイル -> 新規 -> ActionScript モバイルプロジェクト
- (モバイルだと AIR シミュレータでデバッグできるので、Flash のローカルテスト用でもモバイルが無難)
- プロジェクト名には hoge-game-android-project みたいな分かりやすい名前をつけよう
- ワークスペースに読み込まれたときに他のプロジェクトと見分けがつけばよい
- パスの指定
- ライブラリパスに、swc が置かれてるディレクトリを指定
- ソースパスに、共通 Main があるディレクトリや、外部ソースのディレクトリを指定
- 動的にロードする画像などのアセットがあるディレクトリも、ソースパスで指定する
- build ディレクトリ以下にアセットがコピーされるようになる
アセットのパス指定について
以下の items/ をソースパスに指定した場合、build 直下に asset/ および workfile/ がコピーされることになる
items/ ├── asset/ └── workfile/
この場合、ソースコードからのパス指定は "asset/..." から始まる
config の XML 指定
- FPS や背景色などの指定には以下の方法がある
- 1. ソースに埋め込む
- 2. コンパイルオプションで直接指定
- 3. XML の設定ファイルを用意し、コンパイル時に使うように指定
- 管理しやすくするためには、XML の設定ファイルを用意するのが無難だろう
- 用意した XML をコンパイルに使うよう指定するには:
- プロジェクトのプロパティ -> ActionScript コンパイラー
「追加コンパイラー引数」に以下のように追記する
-load-config+="AndroidMain-config.xml"
コマンドラインで mxmlc 直接叩いてビルドすると、Main-config.xml みたいな名前のファイルがあれば 勝手に使ってくれるんだけどね
ハマった系
iOS 実機デバッグうまくいかない
- 環境
- FlashBuilder 4.7
- XCode 5.0 くらい
- iOS 5.1 の iPhone 4S
- デバイス実行するとできるアプリを起動すると即落ちる
- コマンドラインで adt でパッケージしたやつは普通に動いた
落ちたときの端末のエラーログ
<Error>: -[__NSCFDictionary objectForKeyedSubscript:]: unrecognized selector sent to instance 0x961430
これでググったら同じような症状の Stack Overflow 出てきた
これを参考に、iOS プロジェクトの「デバッグの構成」->「起動をカスタマイズ」から
// 俺は Xcode 5.0 なので Applications/Xcode.app/Contents/Developer/Platforms/ iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk
これを
-platformsdk
に設定したら動いた