HTML5テクニカルノート EaselJS 0.7.0のTicker.addEventListener()やTicker.on()メソッドが関数を返さない
EaselJS 0.7.0のTicker.addEventListener()やTicker.on()メソッドが、戻り値に定められている関数を返しません。CreateJS Supportで確認された問題です。 01 問題EaselJS 0.7.0のTicker.addEventListener()と、本バージョンから新たに備わったTicker.on()は、ともにイベントリスナーを加える静的メソッドです。どちらのメソッドも、登録されたリスナー関数を返すと定められています。ところが、戻り値はundefinedで、関数が返されません。
02 原因Ticker.addEventListener()メソッドに、戻り値を返さないバグがあります。CreateJS Supportにより、問題が確認されました。 TickerクラスはEventDispatcherを継承することなく、EventDispatcher.initialize()メソッドによりイベントリスナーを扱うメソッドが実装されます。さらに、EaselJS 0.7.0でTicker.addEventListener()メソッドには、独自の書替えが行われました。初めのリスナーが加えられるまで、クラスの初期化をしないように最適化されたためです。その書替えられたメソッドが値を返しません。また、Ticker.on()メソッドは、内部的にTicker.addEventListener()を呼出しています。 03 対処法EaselJS次期バージョン候補(easeljs-NEXT.min.js)に修正が加えられました。このライブラリを用いれば、戻り値で関数を受取れるようです。 EaselJS 0.7.0を使わなければならない場合は、戻り値を使わないか、Ticker.addEventListener()メソッドを呼出す前に関数の参照を得ておくことになります。Ticker.on()メソッドは、リスナー関数を内部的につくるため、参照は得られません。 04 実装EaselJS 0.7.0のTicker.addEventListener()メソッドはつぎのように実装されています。関数を返すステートメントがありません。
EaselJS次期バージョン候補では、この実装がつぎのように改められました(修正部分のみ)。
Ticker.on()メソッドについては、「EaselJSでイベントリスナーを扱うEventDispatcherクラス」の「実装」をご参照ください。 作成者: 野中文雄 Copyright © 2001-2013 Fumio Nonaka. All rights reserved. |
|||||||