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
* 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
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
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
};\r
};\r
};\r
+ return 0;\r
});\r
\r
\r
* @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
* タイマーを解除します。登録時に受け取ったタイマー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
* 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
};\r
}; \r
};\r
+ return 0;\r
};\r
\r
if( X_UA[ 'IE4' ] || X_UA[ 'MacIE' ] ){\r
\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