OSDN Git Service

Version 0.6.134, add comments for closure compiler.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 14_XTimer.js
index d2dbd8f..41b4fcf 100644 (file)
@@ -42,7 +42,7 @@ var
         * @function\r
         * @return {number} ミリ秒\r
         */\r
-       X_Timer_now = Date.now || function(){ return +new Date; },\r
+       X_Timer_now = Date.now || ( function(){ return +new Date; } ),\r
 \r
        X_Timer_SET_TIMEOUT   = window.setTimeout,\r
        X_Timer_CLEAR_TIMEOUT = window.clearTimeout,\r
@@ -79,7 +79,82 @@ var
        \r
        X_Timer_REQ_FRAME_LIST = [],\r
        X_Timer_requestID      = 0,\r
-       X_Timer_busyOnFrame    = false;\r
+       X_Timer_busyOnFrame    = false,\r
+\r
+       /**\r
+        * requestAnimationFrame をセットします。\r
+        * @alias X.Timer.requestFrame\r
+        * @function\r
+        * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
+        * @param {*} args2\r
+        * @param {*} args3\r
+        * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
+        */\r
+       X_Timer_requestFrame = X_Timer_REQ_ANIME_FRAME ?\r
+               (function( args1, args2, args3 ){\r
+                       var i = X_Timer_REQ_FRAME_LIST.length,\r
+                               f;\r
+                       i === 0 && ( X_Timer_requestID = X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) );\r
+                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       return f.uid = ++X_Timer_uid;\r
+               }) :\r
+               (function( args1, args2, args3 ){\r
+                       var i = X_Timer_REQ_FRAME_LIST.length,\r
+                               f;\r
+                       i === 0 && ( X_Timer_requestID = X_Timer_add( 0, 1, X_Timer_onEnterFrame ) );\r
+                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       return f.uid = ++X_Timer_uid;\r
+               }),\r
+\r
+       /**\r
+        * requestAnimationFrame を解除します。登録時に受け取ったタイマーIDを使用します。\r
+        * @alias X.Timer.cancelFrame\r
+        * @function\r
+        * @param {number} タイマーID\r
+        */\r
+       X_Timer_cancelFrame = X_Timer_CANCEL_ANIME_FRAME ?\r
+               (function( uid ){\r
+                       var list = X_Timer_REQ_FRAME_LIST,\r
+                               l    = list.length,\r
+                               i    = l,\r
+                               f;\r
+                       // fire 中の cancel\r
+                       if( X_Timer_busyOnFrame ){\r
+                               if( !X_Timer_removal ) X_Timer_removal = {};\r
+                               X_Timer_removal[ uid ] = true;\r
+                       } else {\r
+                               for( ; i; ){\r
+                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
+                                       if( f.uid === uid ){\r
+                                               list.splice( i, 1 );\r
+                                               // gecko では無い場合がある\r
+                                               l === 1 && X_Timer_CANCEL_ANIME_FRAME && X_Timer_CANCEL_ANIME_FRAME( X_Timer_requestID );\r
+                                               break;\r
+                                       };\r
+                               };                              \r
+                       };\r
+               }) :\r
+               (function( uid ){\r
+                       var list = X_Timer_REQ_FRAME_LIST,\r
+                               l    = list.length,\r
+                               i    = l,\r
+                               f;\r
+                       // fire 中の cancel\r
+                       if( X_Timer_busyOnFrame ){\r
+                               if( !X_Timer_removal ) X_Timer_removal = {};\r
+                               X_Timer_removal[ uid ] = true;\r
+                       } else {\r
+                               for( ; i; ){\r
+                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
+                                       if( f.uid === uid ){\r
+                                               list.splice( i, 1 );\r
+                                               l === 1 && X_Timer_remove( X_Timer_requestID );\r
+                                               break;\r
+                                       };\r
+                               };\r
+                       };\r
+               });\r
+\r
 \r
 // ------------------------------------------------------------------------- //\r
 // --- interface ----------------------------------------------------------- //\r
@@ -93,25 +168,41 @@ var
  * <p>setTimeout のコールバックに文字列しか指定できないブラウザがあり対策しています。\r
  * <p>requestAnimationFrame をラップします。ベンダープレフィックス付の requestAnimationFrame もない場合、setTimeout にフォールバックします。\r
  * \r
- * @example X.Timer.add( 1000, 5, thisContext, onTimer );\r
- * \r
  * @namespace X.Timer\r
  * @alias X.Timer\r
  */ \r
-X.Timer = {\r
+X[ 'Timer' ] = {\r
 \r
-       now : X_Timer_now,\r
+       'now'          : X_Timer_now,\r
+       \r
+       'add'          : X_Timer_add,\r
        \r
+       'once'         : X_Timer_once,\r
+       \r
+       'remove'       : X_Timer_remove,\r
+       \r
+       'requestFrame' : X_Timer_requestFrame,\r
+       \r
+       'cancelFrame'  : X_Timer_cancelFrame\r
+       \r
+};\r
+\r
+// ------------------------------------------------------------------------- //\r
+// --- implements ---------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+\r
        /**\r
         * タイマーをセットします。\r
+        * @alias X.Timer.add\r
         * @param {number} time ミリ秒\r
         * @param {number} opt_count 回数。省略可能。指定回数で自動でタイマーを破棄します。0 を指定した場合無限にタイマーが呼ばれます。省略した場合 0 と同じです。\r
         * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
         * @param {*} args2\r
         * @param {*} args3\r
         * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
+        * @example X.Timer.add( 1000, 5, thisContext, onTimer );\r
         */\r
-       add : function( time, opt_count, args1, args2, args3 ){\r
+       function X_Timer_add( time, opt_count, args1, args2, args3 ){\r
                var list = X_Timer_TICKET_LIST,\r
                        hash, obj;\r
                time = time < X_Timer_INTERVAL_TIME ? 1 : time / X_Timer_INTERVAL_TIME | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;\r
@@ -126,7 +217,7 @@ X.Timer = {
                hash = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
                if( !hash ) return -1; // dev only\r
                \r
-               if( !hash.k ) hash = { f : hash };\r
+               if( !hash.kind ) hash = { func : hash };\r
                hash.time  = time;\r
                hash.last  = time;\r
                hash.count = opt_count;\r
@@ -135,25 +226,27 @@ X.Timer = {
                \r
            !X_Timer_busyTimeout && X_Timer_update();\r
            return X_Timer_uid;\r
-       },\r
+       };\r
        \r
        /**\r
         * 1 回呼ばれたら解除されるタイマーをセットします。\r
+        * @alias X.Timer.once\r
         * @param {number} time ミリ秒\r
         * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
         * @param {*} args2\r
         * @param {*} args3\r
         * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
         */\r
-       once : function( time, args1, args2, args3 ){\r
-               return X.Timer.add( time, 1, args1, args2, args3 );\r
-       },\r
+       function X_Timer_once( time, args1, args2, args3 ){\r
+               return X_Timer_add( time, 1, args1, args2, args3 );\r
+       };\r
        \r
        /**\r
         * タイマーを解除します。登録時に受け取ったタイマーIDを使用します。\r
+        * @alias X.Timer.remove\r
         * @param {number} タイマーID\r
         */\r
-       remove : function( uid ){\r
+       function X_Timer_remove( uid ){\r
                var list = X_Timer_TICKET_LIST,\r
                        i    = list.length,\r
                        l    = i,\r
@@ -182,7 +275,7 @@ X.Timer = {
                                                                        break;\r
                                                                };\r
                                                        };                                              \r
-                                                       !lazy && eventDispatcher.kill();\r
+                                                       !lazy && eventDispatcher[ 'kill' ]();\r
                                                }; */\r
                                        };\r
                                        \r
@@ -191,85 +284,7 @@ X.Timer = {
                                };\r
                        };                              \r
                };\r
-       },\r
-       \r
-       /**\r
-        * requestAnimationFrame をセットします。\r
-        * @function\r
-        * @param {*} args1 コールバックのための最大で 3 つの引数を指定します。参考:__CallbackHash__\r
-        * @param {*} args2\r
-        * @param {*} args3\r
-        * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
-        */\r
-       requestFrame : X_Timer_REQ_ANIME_FRAME ?\r
-               (function( args1, args2, args3 ){\r
-                       var i = X_Timer_REQ_FRAME_LIST.length,\r
-                               f;\r
-                       i === 0 && ( X_Timer_requestID = X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) );\r
-                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
-                       return f.uid = ++X_Timer_uid;\r
-               }) :\r
-               (function( args1, args2, args3 ){\r
-                       var i = X_Timer_REQ_FRAME_LIST.length,\r
-                               f;\r
-                       i === 0 && ( X_Timer_requestID = X.Timer.add( 0, 1, X_Timer_onEnterFrame ) );\r
-                       f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
-                       return f.uid = ++X_Timer_uid;\r
-               }),\r
-\r
-       /**\r
-        * requestAnimationFrame を解除します。登録時に受け取ったタイマーIDを使用します。\r
-        * @function\r
-        * @param {number} タイマーID\r
-        */\r
-       cancelFrame : X_Timer_CANCEL_ANIME_FRAME ?\r
-               (function( uid ){\r
-                       var list = X_Timer_REQ_FRAME_LIST,\r
-                               l    = list.length,\r
-                               i    = l,\r
-                               f;\r
-                       // fire 中の cancel\r
-                       if( X_Timer_busyOnFrame ){\r
-                               if( !X_Timer_removal ) X_Timer_removal = {};\r
-                               X_Timer_removal[ uid ] = true;\r
-                       } else {\r
-                               for( ; i; ){\r
-                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
-                                       if( f.uid === uid ){\r
-                                               list.splice( i, 1 );\r
-                                               // gecko では無い場合がある\r
-                                               l === 1 && X_Timer_CANCEL_ANIME_FRAME && X_Timer_CANCEL_ANIME_FRAME( X_Timer_requestID );\r
-                                               break;\r
-                                       };\r
-                               };                              \r
-                       };\r
-               }) :\r
-               (function( uid ){\r
-                       var list = X_Timer_REQ_FRAME_LIST,\r
-                               l    = list.length,\r
-                               i    = l,\r
-                               f;\r
-                       // fire 中の cancel\r
-                       if( X_Timer_busyOnFrame ){\r
-                               if( !X_Timer_removal ) X_Timer_removal = {};\r
-                               X_Timer_removal[ uid ] = true;\r
-                       } else {\r
-                               for( ; i; ){\r
-                                       if( ( f = list[ --i ] ).uid < uid ) break;\r
-                                       if( f.uid === uid ){\r
-                                               list.splice( i, 1 );\r
-                                               l === 1 && X.Timer.remove( X_Timer_requestID );\r
-                                               break;\r
-                                       };\r
-                               };\r
-                       };\r
-               })\r
-       \r
-};\r
-\r
-// ------------------------------------------------------------------------- //\r
-// --- implements ---------------------------------------------------------- //\r
-// ------------------------------------------------------------------------- //\r
+       };\r
 \r
 if( X_UA[ 'IE4' ] || X_UA[ 'MacIE' ] ){\r
        X.Timer[ '_' ] = X_Timer_onTimeout;\r
@@ -307,10 +322,10 @@ function X_Timer_onTimeout(){
                \r
                X_Timer_currentUID = q.uid;\r
                \r
-               if( q.k ){\r
+               if( q.kind ){\r
                        r = X_Callback_proxyCallback( q, [] );\r
                } else {\r
-                       r = q.f();\r
+                       r = q.func();\r
                };\r
                \r
                //console.log( 'fire....' );\r
@@ -337,7 +352,7 @@ function X_Timer_onTimeout(){
        X_Timer_skipUpdate = true;\r
        for( uid in X_Timer_removal ){\r
                //if( X_EMPTY_OBJECT[ uid ] ) continue;\r
-               X.Timer.remove( uid );\r
+               X_Timer_remove( uid );\r
        };\r
        X_Timer_skipUpdate = false;\r
        X_Timer_removal = null;\r
@@ -417,14 +432,14 @@ function X_Timer_onEnterFrame( time ){
 \r
     list.splice( 0, l );\r
     if( list.length ){\r
-       X_Timer_requestID = X_Timer_REQ_ANIME_FRAME ? X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) : X.Timer.add( 0, 1, X_Timer_onEnterFrame );\r
+       X_Timer_requestID = X_Timer_REQ_ANIME_FRAME ? X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) : X_Timer_add( 0, 1, X_Timer_onEnterFrame );\r
     };\r
     \r
     X_Timer_busyOnFrame = false;\r
     if( X_Timer_removal ){\r
        for( uid in X_Timer_removal ){\r
                //if( X_EMPTY_OBJECT[ uid ] ) continue;\r
-               X.Timer.cancelFrame( X_Timer_removal[ uid ] );\r
+               X_Timer_cancelFrame( X_Timer_removal[ uid ] );\r
        };\r
        X_Timer_removal = null;\r
     };\r