*/\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
-\r
+ // TODO X.AF.request, X.AF.cancel\r
// http://uupaa.hatenablog.com/entry/2012/02/01/083607\r
// Firefox 4 partial (request only), Mobile Firefox5 ready (request only), Firefox 11 ready (cancel impl) \r
X_Timer_REQ_ANIME_FRAME =\r
false,\r
\r
X_Timer_CANCEL_ANIME_FRAME =\r
+ window.cancelAnimationFrame ||\r
window.cancelRequestAnimationFrame ||\r
window.webkitCancelAnimationFrame ||\r
window.webkitCancelRequestAnimationFrame ||\r
* @alias X.Timer\r
*/ \r
X[ 'Timer' ] = {\r
+ // TODO IE4 の resolution は 64ms\r
+ 'RESOLUTION' : X_Timer_INTERVAL_TIME,\r
\r
'now' : X_Timer_now,\r
\r
function X_Timer_add( time, opt_count, args1, args2, args3 ){\r
var list = X_Timer_TICKET_LIST,\r
hash, obj;\r
+\r
time = time < X_Timer_INTERVAL_TIME ? 1 : time / X_Timer_INTERVAL_TIME | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;\r
\r
if( !X_Type_isNumber( opt_count ) ){\r
};\r
\r
if( X_UA[ 'IE4' ] || X_UA[ 'MacIE' ] ){\r
- X.Timer[ '_' ] = X_Timer_onTimeout;\r
+ X[ 'Timer' ][ '_' ] = X_Timer_onTimeout;\r
X_Timer_onTimeout = 'X.Timer._()';\r
};\r
\r
i = list.length,\r
n;\r
if( i === 0 ){\r
- X_Timer_timerId && X_Timer_CLEAR_TIMEOUT( X_Timer_timerId );\r
+ X_Timer_timerId && clearTimeout( X_Timer_timerId );\r
X_Timer_timerId = 0;\r
return;\r
};\r
\r
if( n < X_Timer_waitTime || X_Timer_timerId === 0 ){\r
if( X_Timer_timerId ){\r
- X_Timer_CLEAR_TIMEOUT( X_Timer_timerId );\r
- n -= ( X_Timer_now() - X_Timer_timeStamp ) / X_Timer_INTERVAL_TIME | 0;\r
+ clearTimeout( X_Timer_timerId );\r
+ n -= ( X_Timer_now() - X_Timer_timeStamp ) / X_Timer_INTERVAL_TIME;\r
0 <= n || ( n = 0 ); // 負の数は 0 に\r
};\r
X_Timer_timeStamp = X_Timer_now();\r
- X_Timer_timerId = X_Timer_SET_TIMEOUT( X_Timer_onTimeout, X_Timer_INTERVAL_TIME * n );\r
+ X_Timer_timerId = setTimeout( X_Timer_onTimeout, X_Timer_INTERVAL_TIME * n | 0 );\r
X_Timer_waitTime = n;\r
};\r
};\r
window.addEventListener( 'scroll', function(){\r
var last, now;\r
if( X_Timer_timerId ){\r
- X_Timer_CLEAR_TIMEOUT( X_Timer_timerId );\r
+ clearTimeout( X_Timer_timerId );\r
now = X_Timer_now();\r
last = X_Timer_timeStamp + X_Timer_INTERVAL_TIME * X_Timer_waitTime - now;\r
- X_Timer_timerId = X_Timer_SET_TIMEOUT( X_Timer_onTimeout, 0 < last ? last : 0 );\r
+ X_Timer_timerId = setTimeout( X_Timer_onTimeout, 0 < last ? last : 0 );\r
// 更新\r
X_Timer_timeStamp = now;\r
X_Timer_waitTime = last / X_Timer_INTERVAL_TIME | 0;\r