haXe memo


haXe でサイトを作ろうとしていて。Flash とは勝手が微妙に違うのでメモしていく。

・Mac では eclihx (heXe Eclipse plug-in) は Java 6 で動作する Eclipse Cocoa (64bit) じゃないと動かない。(そしてそんなに便利じゃない)
TextMate Bundle も微妙。
FlashDevelop しかなくね?
FDT 4 がまちどおしい。
・エントリポイントは haxe -main Hoge でコンパイルしたら Hoge クラスの static main() から。このとき Hoge は Sprite クラスである必要はない。
・flash.Lib クラスの current が root の MovieClip。
・trace するとステージにおかれた TextField に出力される。
・flash.Lib.trace がいつものやつ。デフォルトの trace を置き換えることもできるらしい。
・Int, Bool, Void あたま大文字。
・Number なくってかわりに Float。
・getDefinitionByName はない。かわりに Type.resolveClass。
・getDefinitionByName でとってきた Class をそのまま new できない。かわりに Type.createInstance。→ あー、flash.Lib.attach だけでクラス取得してインスタンス化までいけるのかな。引数あたえたい時は createInstance。
グラフィックは Flash IDE でてきとうなクラス名 (Hoge) つけて書きだした swf を、Application.currentDomain に Load して、同名クラスを Hoge.hx で作って上書き。。(まだよくわからん) assets.fla → assets.swf / haxe –gen-hx-classes
assets.swf / hxclasses に assets.swf に含まれるクラスの .hx 版みたいなのん(stub)ができあがるのでそれを使う。 / コンパイルするときに -swf-lib で assets.swf をくっつける。
・-swf-lib で指定できる swf は 1 個だけなので(なんで?)複数の swf ライブラリを使用したい場合は swfmill でくっつける。。→(どうやら複数の swf をいちどにコンパイルできるようになりつつあるっぽい。)
Sam HaXe。swfmill の haXe 用高機能版? hxswfml 類似品?
・SWC も haXe から呼び出すためのインターフェースを用意すれば使える。
・AS3 で SWC (SWF) つくって haXe で全部まとめるか、haXe で SWC 書きだして AS3 側で全部がちゃんこするか? (polygonal のは後者)
・あるクラスのサブクラスを作ったら、コンストラクタでは明示的に super() 呼ばないといけない。
・コンストラクタの名前はクラス名じゃなくって new。public function new() {}
・as は flash.Lib.as に static function として存在してる。キャスト String(hoge) は cast(hoge, String) かな?
・is は Std.is(hoge, SomeClass)。
・クラス名は必ず大文字アルファベットから始める。
・Flash のトップレベルの関数とかは untyped __global__[“encodeURIComponent”](str) とかで呼べる。ちなみに encodeURIComponent の代わりに StringTools.urlEncode がある。
as3tohaxe で AS3 のクラス (.as) を haXe のクラス (.hx) にコンバートできる。ちょっと手直し必要だけど 1 からやるよりは楽。
・Object のフィールド削除、delete someObject[“keyString”] は Reflect API を使って Reflect.deleteField(someObject, “keyString”) する。その他 Object に対する操作は Reflect クラスにいろいろと?
・for (var key:String in obj) { trace(obj[key]); } → for (key Reflect.fields(obj)) { trace(Reflect.field(obj, key); }
列挙型 enum がある。しかもコンストラクタがあったりしてなんか特殊。。
・enum を switch するときは、その enum 型に含まれるすべての項目にたいして case 書かないといけない。
・protected はない。っていうか private が protected。private がない。

・・・

続く。