hifive / hifivemain

main repository
http://www.htmlhifive.com/
Other
40 stars 10 forks source link

EventDispatcher を外部に公開して欲しい #268

Closed 3bch closed 10 years ago

3bch commented 10 years ago

h5.core.data.js に定義されている EventDispatcher を継承して独自のクラスを作成したいのですが、EventDispatcher を hifive の外から取得することができませんでした。

EventDispatcher を外部に公開してもらうことはできないでしょうか?

simdy commented 10 years ago

Mix-in API(h5.u.obj.mix())を追加し、EventDispatcherをMixinの一つとして公開することとします。 EventDispatcherはh5.mixin.EventDispatcherMixinにて公開され、 h5.u.obj.mix(target, h5.mixin.EventDispatcherMixin)のように呼ぶと利用できます。 (targetは、EventDispatcher機能を追加するオブジェクトを指定してください。  特定のオブジェクト全体に追加したい場合、prototypeプロパティのオブジェクトに対して使用することも可能です。)

simdy commented 10 years ago

Mix-inのAPIを変更します。 以下のように、h5.mixin.eventDispatcher.mix()メソッドを呼び出すようにしてください。

var obj = {};
h5.mixin.eventDispatcher.mix(obj);
fukudayasuo commented 10 years ago

対応しました。

var obj = {};
h5.mixin.eventDispatcher.mix(obj);

でEventDispatcherの機能を持つオブジェクトを作成できます。

EventDispatcherの機能をプロトタイプに持つクラスを作成したい場合は、以下のようにprototypeオブジェクトにmixinすることで作成できます。

function MyClass(){
  /* コンストラクタ */
}
h5.mixin.eventDispatcher.mix(MyClass.prototype);

var myobj = new MyClass();

// myobjはEventDispatcherを継承しているので、以下のように使用可能
myobj.addEventListener('myevent', function(){/* イベントハンドラ */});
myobj.dispatchEvent('myevent');