Posted by & filed under リリースノート.

こんにちは。開発チームの伏見です。

enchant.js v0.6.2 をリリースしました。こちらからダウンロードできます。 主な変更点は以下の通りです。

Lazy-Scene による Android 描画の高速化 (#145)

v0.6系のSceneはCanvas描画とDom描画を、Sceneが持つCanvasLayerオブジェクトとDomLayerに行います。Sceneに追加するEntityが_elementプロパティを持つかによって、CanvasLayerに描画するかDomLayerに描画するかを振り分けていました。

現在のバージョンではSceneの生成時にCanvasLayerとDomLayerを生成しSceneの持つdiv要素に追加しているため、常にCanvasの上にdiv要素が重なっている状態となっていますが、一部のモバイル端末のブラウザでは、Canvasの上にDomを重ねた場合にCanvasの描画パフォーマンスが低下する場合があります。

この問題を解決するために、Sceneの生成時にはLayerを作らずに、Entityが追加されたタイミングで必要なLayerを用意するようにしました。

CanvasScene, DOMScene クラスの追加 (#145)

さらに上記の修正に合わせて、Canvas描画のみをサポートするCanvasScene、DOM描画のみをサポートするDOMSceneも追加しました。v0.5 系のように、Spriteなどに対してCSSを使いたい場合、Sceneの代わりにDOMSceneを使うことで利用できます。

https://github.com/wise9/enchant.js/issues/145

Core#keybind の拡張 (#148)

任意の名前のボタンをキーに設定することができるようになりました。

https://github.com/wise9/enchant.js/issues/148

RequestAnimationFrame の導入(#131)

ブラウザの再描画のタイミングに合わせて enchant.js の描画が実行されるようになり、レスポンスの向上が期待されます。また、タブが背面にあるときなど、画面の再描画がないときには、enchant.js の更新も止まるようになりました。現在の各ブラウザでのサポート状況は以下の通りです。

スクリーンショット 2012-12-28 21.32.21 スクリーンショット 2012-12-28 21.32.27

但しこの導入により、60 fps を超える fps を指定した場合に不具合が発生する可能性があります。一般のWebブラウザの画面更新回数が 60fps を超えることはありませんので、60 を超える値は指定しないでください。

時刻の取得に WebPerf API の performance.now() を利用

利用できる場合、window.performance.webkitNow などを利用します。これにより、enchant.Event.ENTER_FRAME イベントのイベントオブジェクトの elapsed プロパティ (前のフレームからの経過時間を返します) が浮動小数点値を返すようにになりました。

次期リリース予告

enchant.js のデバッギングやエラー表示をより分かりやすく、扱いやすくする計画があります。features/better-error ブランチで開発予定です。

enchant.js にビルドシステム grunt.js が導入されましたが、ビルド後のスクリプトもリポジトリで管理しているため、コミットとの分離ができていませんでした。次期リリース以降は、「ダウンロードパッケージ」とリポジトリを分ける予定です。また、ダウンロードパッケージを派生させ、チュートリアルなどが同梱され、また開発用のファイルなどが含まれない「プログラミング初心者用パッケージ」などを準備する計画もあります。

v0.6.2のソースコードは こちらからダウンロードできます。

以上です。2012年も enchant.js プロジェクトに関わってくださった皆様に御礼申し上げます。ありがとうございました! 2013年もよろしくお願いいたします。

This post is also available in: 英語