CreateJSがバグ修正で0.01バージョンアップ [Edit]

2013年5月11日にCreateJS Suiteのライブラリ群は、バグ修正版としてバージョンがそれぞれ0.01上がりました。本稿執筆時においては、GitHubからダウンロードすることになります。前のバージョンで筆者が調べた問題について、修正されているかどうかを確かめました。

01 EaselJS

EaselJS 0.6.1になりました。

01-01 CreateJSでダブルクリックを扱うイベントの誤記 ー DisplayObject.dblclickイベント

EaselJS 0.6.0のドキュメントでダブルクリックを扱うイベントの名前が誤っていました。

[誤り]:
"dblClick"

[正しい]:
"dblclick"

GitHubからダウンロードしたEaselJSの「API Documentation for: 0.6.1」では、正しくすべて小文字に修正されています(図001)。

図001■「API Documentation for: 0.6.1」のDisplayObjectクラスに書かれたイベント
図001

01-02 EaselJSのMatrex2D.scale()メソッドの演算に誤りがある

EaselJS0.6.0のMatrix2D.scale()メソッドの演算に誤りがありました。デフォルト(単位行列)のMatrix2Dオブジェクトを90度回転すると、Matrex2D.scale()メソッドで拡大も縮小もできなくなります。

たとえば、以下のコードはオブジェクト(myBitmap)を90度回転します。すると、Matrix2D.scale()メソッドを呼出しても、Matrix2Dオブジェクトに変化が加わらなくなり、オブジェクトは拡大しません。

var matrix = new createjs.Matrix2D();
matrix.rotate(Math.PI / 2);
// [Matrix2D (a=6.123233995736766e-17 b=1 c=-1 d=6.123233995736766e-17 tx=0 ty=0)]
matrix.scale(2, 2);  // no effect.
// [Matrix2D (a=1.2246467991473532e-16 b=1 c=-1 d=1.2246467991473532e-16 tx=0 ty=0)]
matrix.decompose(myBitmap);

図002■オブジェクトは90度回転しても拡大しない
Example of Sound classExample of Sound class

EaselJS 0.6.1のMatrix2D.scale()メソッドの実装が改められたため、オブジェクトを90度回転した後伸縮できるようになりました。ただし、Matrix2D.prependTransform()など他のメソッドによる変換との整合性がとれていないようです。詳しくは、「EaselJSのMatrix2D.scale()メソッドを他の変換の後に呼出すと正しく伸縮されない」をお読みください。

02 TweenJS

TweenJS 0.4.1になりました。

03 SondJS

SoundJS 0.4.1になりました。

03-01 SoundJSのSoundInstance.completeイベントでSoundInstance.play()メソッドがサウンドを再生しない

SoundJSでサウンドを再生し終わると、SoundInstance.completeイベントが起こります。そのイベントリスナーでSoundInstance.play()メソッドを呼出しても、サウンドが再生されないという問題です。SoundJS 0.4.0では、つぎのコードはサウンドを一度再生するだけで、繰返されません。

createjs.Sound.addEventListener("loadComplete", loadHandler);
createjs.Sound.registerSound("sounds/test.mp3", "sound");
function loadHandler(eventObject) {
	var instance = createjs.Sound.play("sound");
	instance.addEventListener("complete", playAgain);
}
function playAgain(eventObject) {
	var instance = eventObject.target;
	instance.play();
}

SoundJS 0.4.1では、イベントでサウンドを初期化する順序が修正され、前掲コードでサウンドを繰返し再生できるようになりました。

04 PreloadJS

PreloadJS 0.3.1になりました。

04-01 PreloadJSのLoadQueue.fileprogressイベントで読込みパーセンテージを調べる

PreloadJSのLoadQueue.fileprogressイベントで読込まれたパーセンテージは、イベントオブジェクトから調べられます。ところが、ドキュメンテーションのプロパティ名が誤っていました。「PreloadJS v0.3.0 API Documentation」のLoadQueue.fileprogressイベントの項には、イベントオブジェクトのプロパティ名がつぎのように「percent」と記されています。

fileprogress
Defined in fileprogress:355
Available since 0.3.0

This event is fired when an an individual file progress changes.

Event Payload:
    ...[中略]...
  • percent Number
    The percentage that has been loaded. This will be a number between 0 and 1.

正しいプロパティ名は以下のとおり「progress」です。しかし、本稿執筆時にGitHubからダウンロードしたファイルは「preloadjs_docs-0.3.0.zip」となっており、0.3.1のドキュメンテーションに差替えられていないようです。

Event Payload:
    ...[中略]...
  • progress Number
    The percentage that has been loaded. This will be a number between 0 and 1.

一旦は新バージョン候補のファイルをアップロードして修正も済ませていた経緯がありますので、おそらくは単純にファイルを間違えたものと推測されます。

04-02 CreateJSのproxy()メソッドに第3引数が渡せない

SoundJS 0.4.0のSoundクラスには、グローバルな静的メソッドとしてproxy()が備わりました。ドキュメントに書かれていないものの、メソッドには第3引数以降が渡せます。ところが、PreloadJSライブラリを読込むと渡せなくなってしまいます。LoadQueueクラスにもproxy()メソッドが、異なる実装で定められており、Soundクラスのproxy()メソッドを上書きしてしまうからです

PreloadJS 0.3.1のLoadQueueクラスは、グローバルなproxy()メソッドがあるかどうか確かめたうえで定めることにより上書きを避け、実装もSoundクラスと合わせました。また、古いPreloadJSクラスと互換のために残した静的メソッドproxy()は、LoadQueueクラスに加えられています。

コメント

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事