* <ol>\r
* <li>as3 の EventDispatcher ライクなクラス。そのまま使ったり、継承したり。\r
* <li>_rawObject メンバがいる場合、addEventListener, attachEvent, on 等で生のブラウザオブジェクトにリスナを登録する。\r
- * window, document, HTMLElement, Image, XHR, Silverlight などが _rawObject\r
- * <li>イベントディスパッチにリスナの追加が呼び出された場合、リスナはこれ以降のイベントから呼ばれます。同様にリスナの削除が呼ばれた場合、そのリスナが呼ばれることはありません。\r
+ * window, document, HTMLElement, Image, XHR, Silverlight などが _rawObject になる。\r
+ * <li>イベントディスパッチ中にリスナの追加が呼び出された場合、リスナはこれ以降のイベントから呼ばれます。同様にリスナの削除が呼ばれた場合、そのリスナが呼ばれることはありません。\r
* </ol>\r
* \r
* <blockquot>\r
* \r
* <p>またコールバックに対して、this コンテキストや、追加の引数を指定もできます。 this コンテキストを指定しなかった場合、EventDispatcher インスタンスがコールバックの this になります。 \r
* \r
- * <p>unlisten() ã\81¯ã\80\81å¼\95æ\95°ã\82\92æ\8c\87å®\9aã\81\97ã\81ªã\81\8bã\81£ã\81\9få ´å\90\88ã\80\81å\85¨ã\81¦ã\81®ã\82¤ã\83\99ã\83³ã\83\88ã\82\92解é\99¤ã\81\97ã\81¾ã\81\99ã\80\82ã\81\9fã\81 ã\81\97ã\80\81systemListen 経由で登録されたハンドラは解除されません。\r
+ * <p>unlisten() ã\81§ã\81¯ systemListen 経由で登録されたハンドラは解除されません。\r
* \r
* systemListen, systemUnlisten は、ライブラリ内のコードからしかアクセスできません。\r
* \r
'_rawType' : X_EventDispatcher_EVENT_TARGET_OTHER,\r
\r
/**\r
- * イベントリスナをイベント名文字列や数値(1~,フレームワーク内で定義)をキーとするArrayで記憶します。<br>\r
- * Arrayには、{k:種類,x:コンテキスト(thisObject),f:関数,s:サプリメントする引数の配列} というハッシュ、または関数が蓄えられています。\r
+ * イベントリスナをイベント名文字列や数値(5以上、フレームワーク内で定義)をキーとするArrayで記憶します。<br>\r
+ * Arrayには、{kind:種類,context:コンテキスト(thisObject),func:コールバック関数,supplement:サプリメントする引数の配列} というハッシュ、または関数が蓄えられています。\r
* \r
* @private\r
* @type {__X_EventDispatcher_Listeners__}\r
\r
/**\r
* <p>イベントリスナの登録状況を真偽値で返す。戻り値が数値(index)の場合もあるが、これは内部のみで使用。\r
- * <p>this[ 'listening' ](); のように type を省略した場合、一つでも登録があれば true を返す。\r
- * <p>this[ 'listening' ]( 'myevent' ); と type だけを与えた場合、その type に登録があれば true を返す。\r
+ * <p>this.listening(); のように type を省略した場合、一つでも登録があれば true を返す。\r
+ * <p>this.listening( 'myevent' ); と type だけを与えた場合、その type に登録があれば true を返す。\r
* <p>type と イベントリスナの組み合わせが登録されているかを調べる場合は、listen 時の thisObject や args(Array) も一致させて渡す必要がある。\r
* \r
* @example \r
- * this[ 'listen' ]( [ 'myevent', 'yourevent' ], this, onMyEvent, args = [ 1, 'a' ] );\r
- * this[ 'listening' ]( 'myevent', this, onMyEvent, args ) === true;\r
+ * this.listen( [ 'myevent', 'yourevent' ], this, onMyEvent, args = [ 1, 'a' ] );\r
+ * this.listening( 'myevent', this, onMyEvent, args ) === true;\r
* \r
* @return {number|boolean}\r
* @param {string|number} opt_type\r
* kill() 時には内部でまだ呼ばれていないタイマーの X.Timer.remove() が行われる。インスタンスが破棄された後にタイマーが呼ばれることがないので神経質にならなくても安全に使える。\r
* @example this[ 'asyncDispatch' ]( 'myevent' );\r
* // どちらのコードも同じ動作をする。\r
- * this[ 'asyncDispatch' ]( 0, 'myevent' );\r
+ * this.asyncDispatch( 0, 'myevent' );\r
* @param {number|eventHash|string} delay ms 省略した場合は 0 として扱う asyncDispatch( 'myevent' ) -> asyncDispatch( 0, 'myevent' )\r
* @param {eventHash|string|number} e イベントを表す数値、文字列、{ type : XXX, ... } なオブジェクト\r
* @return {number} X.Timer.add() の戻り値\r
type = e[ 'type' ],\r
list, unlistens, i, l, args, f, r, sysOnly, timerID;\r
\r
- if( !listeners || !( list = listeners[ type || e ] ) ) return ret;\r
+ if( !listeners || !( list = listeners[ type || e ] ) ) return X_Callback_NONE;\r
\r
// 数値, 文字が渡された場合\r
if( !type ){\r
};\r
if( unlistens && unlistens.indexOf( f ) !== -1 ) continue;\r
\r
- r = X_Callback_proxyCallback( f, args || ( args = [ e ] ) );\r
+ r = X_Callback_proxyCallback( f, args || ( args = [ e ] ) ) || 0;\r
\r
if( f.once || r & X_Callback_UN_LISTEN ){\r
// dispatch 中に unlisten が作られることがある\r
};\r
ret |= X_Type_isFinite( r ) ? r : 0;\r
\r
- if( r & X_Callback_STOP_NOW === X_Callback_STOP_NOW ){\r
+ if( ( r & X_Callback_STOP_NOW ) === X_Callback_STOP_NOW ){ // iOS では ( & ) 括弧が無いと判定を誤る\r
sysOnly = true;\r
break;\r
- }; \r
+ };\r
};\r
\r
if( ( --listeners[ X_LISTENERS_DISPATCHING ] ) === 0 ){\r