enchant.jsの使えないと感じた点を列挙いたす

canvas使ってミニゲームのwebアプリを作る案件でenchant.jsを使ってみたけど、かなり微妙な点が目立った。どこにも情報がなかったので書いておく。バージョンは0.8.2。

f:id:chott:20141024080757p:plain

手動で設定したviewportが効かない

enchantが読み込み時に自動で上書きしてしまうので、enchantの読み込みより後にmetaタグを書くとよい。ユーザがゲーム作るのに必要な作業をできるだけ下げようとしているのかもしれないが、これでは業務には使いづらい。

レンダリング後にステージの位置やサイズを変更できない

例えば、margin: 0 auto; や、position: absolute などでウィンドウサイズに合わせて中央配置などができない。これはenchantの仕様のようで、タッチ領域を描画要素と別個に扱っておりレンダリング時に設定されるような挙動になっているため、レンダリング後に表示要素の位置やサイズに変化があっても、タッチ領域が追従してくれずズレることになる。

これはかなり致命的で、ポートレートランドスケープの切替時やiPhoneでステータスバーが出てきた場合などに、左右中央配置を保ってステージサイズをフィットさせることなどができない。

ステージの拡大縮小が面倒

上記の仕様で、cssで手軽にステージサイズを変更することもできない。拡大縮小自体は適当なタイミングでgame.scaleを呼ぶことでなんとかできるけどー

iOS7でoggが使えない

これはiOSの仕様に依存してるのかもしれないがロード時にエラーが出る。 mp3にしたら大丈夫だった。

GroupがあるのにSpriteをまとめて表示や拡大縮小ができない

Groupにscaleがセットできないしvisibleも使えない。これらの用途は当然期待されると思うんだけど。

アニメーションのメソッドチェーンで所々よくわからない挙動

repeat().then()とか、exec().then()とかできない。あとloop()とかcue()とかも組み合わせによって動かないものがある。直感的じゃないと思うなあ。

-

こんな感じ。特にステージ関連の仕様がわかりづらかったり不便。。