OSDN Git Service

Version 0.6.155, fix X.Callback.STOP_NOW, working X.Audio @iem9.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 13_XEventDispatcher.js
index f798c2a..9fa9c80 100644 (file)
@@ -68,8 +68,8 @@ var X_EventDispatcher_once       = false,
  * <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
@@ -94,7 +94,7 @@ var X_EventDispatcher_once       = false,
  * \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
@@ -119,8 +119,8 @@ var X_EventDispatcher = X[ 'EventDispatcher' ] =
                        '_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
@@ -172,13 +172,13 @@ var X_EventDispatcher = X[ 'EventDispatcher' ] =
 \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
@@ -222,7 +222,7 @@ var X_EventDispatcher = X[ 'EventDispatcher' ] =
                 * 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
@@ -259,7 +259,7 @@ function X_EventDispatcher_dispatch( e ){
                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
@@ -286,7 +286,7 @@ function X_EventDispatcher_dispatch( e ){
                };\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
@@ -298,10 +298,10 @@ function X_EventDispatcher_dispatch( e ){
                };\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