mxmlcでBox2DFlashAS3のサンプルをビルドする方法

Box2DFlashAS3

GIGAZINE などでも紹介された、話題の物理エンジン Box2DFlashAS3 1.4.2 を試してみました。

ダウンロードは SourceForge.net: Box2DFlashAS3 から。

パッケージに含まれている主要なファイルは以下の通り。

Engine フォルダBox2DFlashAS3 の本体です。
General フォルダデモで利用しているユーティリティクラスが入っています。
TestBed フォルダデモ8種類とその基底クラスが入っています。
Main.asデモをカーソルキーで切り替える機能などを実装したクラスです。
PhysTest.flaこれをコンパイルすると SWF ができあがるようです。
PhysTest.swfデモのコンパイル済み SWF です。Box2DFlashAS3 に展示してあるデモがこのファイル。

Flash CS3 は持ってないので、.fla なファイルは開けません。

そこで、Main.as を mxmlc でコンパイルしてみるとエラーが…。

むきー! 絶対に動かしてやる!!

(追記) 1.4.3 からは、mxmlc で Main.as をコンパイルできるようになっています。以下に書いてある修正および警告を出なくする工夫は不要です。

Main.as を修正

Main.as をコンパイルして実行すると、

変数 m_aboutTextN は定義されていません。

という例外が出るので、まずはこれを解決。

ソースを見てみると、50行目に次のような内容が。

    // textfield pointer
    m_aboutText = m_aboutTextN;

m_aboutTextN は Main.as には含まれていない。おそらく PhysTest.fla で定義されたシンボルなのでしょう。

ってことで、スクリプトを次のように修正。

    // textfield pointer
    m_aboutText = new TextField();//m_aboutTextN;
    addChild(m_aboutText);

これで実行時の例外は出なくなった。

コンパイル オプション

Box2DFlashAS3 の移植が中途半端で、コンパイル時に警告が大量に出てしまう。警告をよく見ると、変数や戻り値の型宣言が行われていないようだ。CS3 では警告すらでないのかな?

ということで、コンパイル オプションを次のようにしてみた。

mxmlc --strict=false --warnings=false --default-background-color=#414647 -default-size 640 360 Main.as

見やすくしたらこうなる。

mxmlc --strict=false \
      --warnings=false \
      --default-background-color=#414647 \
      -default-size 640 360 \
      Main.as

警告を無視するために --strict=false、警告を出力しないために --warnings=false、さらに背景色と SWF のサイズを指定するオプションもつけている。

完成

Main.swf が出力されて、Box2DFlashAS3 のトップページにある SWF を吐き出すことができた。

やったー。

--strict=false にしているのが切ないので、警告が出なくなるパッチを誰かが書いてくれないかなぁ。