OSDN Git Service

Version 0.6.139, fix Node.animate when no.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 14_XTimer.js
index 41b4fcf..48b27a3 100644 (file)
@@ -95,14 +95,18 @@ var
                        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
+                       f = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       if( !f.kind ) f = { func : f };\r
+                       X_Timer_REQ_FRAME_LIST[ i ] = f;\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
+                       f = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       if( !f.kind ) f = { func : f };\r
+                       X_Timer_REQ_FRAME_LIST[ i ] = f;\r
                        return f.uid = ++X_Timer_uid;\r
                }),\r
 \r
@@ -110,7 +114,9 @@ var
         * requestAnimationFrame を解除します。登録時に受け取ったタイマーIDを使用します。\r
         * @alias X.Timer.cancelFrame\r
         * @function\r
-        * @param {number} タイマーID\r
+        * @param {number|string} タイマーID, 数字文字の場合もある!\r
+        * @return {number} 0 が返る\r
+        * @example if( timerID ) timerID = X.Timer.cancelFrame( timerID );\r
         */\r
        X_Timer_cancelFrame = X_Timer_CANCEL_ANIME_FRAME ?\r
                (function( uid ){\r
@@ -118,8 +124,9 @@ var
                                l    = list.length,\r
                                i    = l,\r
                                f;\r
-                       // fire 中の cancel\r
+\r
                        if( X_Timer_busyOnFrame ){\r
+                               // fire 中の cancel\r
                                if( !X_Timer_removal ) X_Timer_removal = {};\r
                                X_Timer_removal[ uid ] = true;\r
                        } else {\r
@@ -127,20 +134,22 @@ var
                                        if( ( f = list[ --i ] ).uid < uid ) break;\r
                                        if( f.uid === uid ){\r
                                                list.splice( i, 1 );\r
-                                               // gecko では無い場合がある\r
+                                               // gecko では cancelRequestAnimationFrame が無い場合がある\r
                                                l === 1 && X_Timer_CANCEL_ANIME_FRAME && X_Timer_CANCEL_ANIME_FRAME( X_Timer_requestID );\r
                                                break;\r
                                        };\r
                                };                              \r
                        };\r
+                       return 0;\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
+\r
                        if( X_Timer_busyOnFrame ){\r
+                               // fire 中の cancel\r
                                if( !X_Timer_removal ) X_Timer_removal = {};\r
                                X_Timer_removal[ uid ] = true;\r
                        } else {\r
@@ -153,6 +162,7 @@ var
                                        };\r
                                };\r
                        };\r
+                       return 0;\r
                });\r
 \r
 \r
@@ -200,7 +210,7 @@ X[ 'Timer' ] = {
         * @param {*} args2\r
         * @param {*} args3\r
         * @return {number} タイマーID。1 以上の数値。タイマーの解除に使用。\r
-        * @example X.Timer.add( 1000, 5, thisContext, onTimer );\r
+        * @example timerID = X.Timer.add( 1000, 5, thisContext, onTimer );\r
         */\r
        function X_Timer_add( time, opt_count, args1, args2, args3 ){\r
                var list = X_Timer_TICKET_LIST,\r
@@ -245,14 +255,17 @@ X[ 'Timer' ] = {
         * タイマーを解除します。登録時に受け取ったタイマーIDを使用します。\r
         * @alias X.Timer.remove\r
         * @param {number} タイマーID\r
+        * @return {number} 0 が返る\r
+        * @example if( timerID ) timerID = X.Timer.remove( timerID );\r
         */\r
        function X_Timer_remove( uid ){\r
                var list = X_Timer_TICKET_LIST,\r
                        i    = list.length,\r
                        l    = i,\r
                        f, q, eventDispatcher, lazy, listeners;\r
-               // fire 中の cancel\r
+               \r
                if( X_Timer_busyTimeout ){\r
+                       // fire 中の cancel\r
                        if( !X_Timer_removal ) X_Timer_removal = {};\r
                        X_Timer_removal[ uid ] = true;\r
                } else {\r
@@ -264,19 +277,7 @@ X[ 'Timer' ] = {
                                         * lazyDispatch 中の EventDispatcher の有無を調べる\r
                                         */\r
                                        if( X_EventDispatcher_LAZY_TIMERS[ uid ] ){\r
-                                               // eventDispatcher = X_EventDispatcher_LAZY_TIMERS[ uid ];\r
                                                delete X_EventDispatcher_LAZY_TIMERS[ uid ];\r
-                                               /*\r
-                                               listeners = eventDispatcher[ '_listeners' ];\r
-                                               if( listeners && !listeners[ X_Listeners_.DISPATCHING ] && listeners[ X_Listeners_.KILL_RESERVED ] ){\r
-                                                       for( uid in X_EventDispatcher_LAZY_TIMERS ){\r
-                                                               if( X_EventDispatcher_LAZY_TIMERS[ uid ] === eventDispatcher ){\r
-                                                                       lazy = true;\r
-                                                                       break;\r
-                                                               };\r
-                                                       };                                              \r
-                                                       !lazy && eventDispatcher[ 'kill' ]();\r
-                                               }; */\r
                                        };\r
                                        \r
                                        !X_Timer_skipUpdate && ( q.last <= X_Timer_waitTime || l === 1 ) && X_Timer_update();\r
@@ -284,6 +285,7 @@ X[ 'Timer' ] = {
                                };\r
                        };                              \r
                };\r
+               return 0;\r
        };\r
 \r
 if( X_UA[ 'IE4' ] || X_UA[ 'MacIE' ] ){\r
@@ -423,10 +425,10 @@ function X_Timer_onEnterFrame( time ){
        \r
        if( X_Timer_removal && X_Timer_removal[ q.uid ] ) continue;\r
        \r
-               if( q.k ){\r
+               if( q.kind ){\r
                        X_Callback_proxyCallback( q, args || ( args = [ time ] ) );\r
                } else {\r
-                       q( time );\r
+                       q.func( time );\r
                };\r
     };\r
 \r