timerId : 0,\r
endTime : 0, // iOS\r
next : 0,\r
+ busy : false, // for Opera7\r
\r
REQUEST_FRAME_LIST : [],\r
requestID : 0,\r
list = X.Timer.TICKET_LIST,\r
i = list.length,\r
q, f, c;\r
+ \r
+ if( X.Timer.busy ){\r
+ alert( 'busy!' );\r
+ };\r
+ \r
+ X.Timer.busy = true;\r
+ \r
for( ; i; ){\r
q = list[ --i ];\r
if( 0 < ( q.l -= next ) ) continue;\r
q.l = q.t;\r
};\r
X.Timer.timerId = 0;\r
- X.Timer._update();\r
+ X.Timer.busy = false;\r
+ X.Timer._update(); \r
},\r
_update : function(){\r
var list = X.Timer.TICKET_LIST,\r
add : function( time, opt_count, args1, args2, args3 ){\r
var list = X.Timer.TICKET_LIST;\r
time = time < X.Timer.INTERVAL_TIME ? 1 : ( time / X.Timer.INTERVAL_TIME ) | 0; // 正の数で使える「Math.floor(x)」を「(x | 0)」に;\r
-\r
+ \r
if( typeof opt_count !== 'number' ){\r
args3 = args2;\r
args2 = args1;\r
f : X.Callback.create( args1, args2, args3 ),\r
u : ++X.Timer.uid\r
};\r
- X.Timer._update();\r
+ !X.Timer.busy && X.Timer._update();\r
return X.Timer.uid;\r
},\r
once : function( time, args1, args2, args3 ){\r
list.splice( i, 1 );\r
f = q.f;\r
f.kill && f.kill();\r
- ( /* q[ INDEX_COUNT ] <= next || */ l === 1 ) && X.Timer._update();\r
+ !X.Timer.busy && ( /* q[ INDEX_COUNT ] <= next || */ l === 1 ) && X.Timer._update();\r
//q.length = 0;\r
break;\r
};\r