日期:2014-05-16 浏览次数:20410 次
<html> <head> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> <title>Javascript 游戏时钟小试</title> <script type="text/javascript" src="jquery-1.6.4.js"></script> <style type="text/css"> body{font-size: 14px;} .wrap{border:solid 1px #f60; width:500px; height:300px; position:relative;} .item{border:solid 1px #660; line-height:30px; height:30px;} .red{color:red;} .block{width:10px;height:10px;background-color:#aaa;position:absolute;z-index:10000;line-height:0;font-size:0;} .ss{width:1px;height:14px;background-color:#eee;color:#ff0;line-height:0;font-size:10px;line-height: 14px;margin-top: 1px;} #debug{position:fixed; border:solid 1px #f60; width:600px;height:100%;right:0;top: 0;overflow: scroll;} </style> </head> <body> <a href="javascript:start()">start</a> | <a href="javascript:pause()">pause</a> | addBlock<a href="javascript:addBlock()">[1]</a><a href="javascript:addBlock2()">[10]</a>(<span id="blocks">0</span>) | Frame: <span id='Frame'>0</span> | SkipedFrame: <span id='skipFrame'>0</span> | <a href="javascript:big()">复杂计算</a> | <a href="javascript:$('#debug')">ClearDebug</a> <div class="wrap" id="msg"> <div id="block-x" class="block" style="top:20px;left:0;background-color:#f60;"></div> </div> <div class="wrap"> <div class='ss' id='s_0'></div> <div class='ss' id='s_1'></div> <div class='ss' id='s_2'></div> <div class='ss' id='s_3'></div> <div class='ss' id='s_4'></div> <div class='ss' id='s_5'></div> <div class='ss' id='s_6'></div> <div class='ss' id='s_7'></div> <div class='ss' id='s_8'></div> <div class='ss' id='s_9'></div> <div class='ss' id='s_10'></div> <div class='ss' id='s_11'></div> <div class='ss' id='s_12'></div> <div class='ss' id='s_13'></div> <div class='ss' id='s_14'></div> <div class='ss' id='s_15'></div> <div class='ss' id='s_16'></div> <div class='ss' id='s_17'></div> <div class='ss' id='s_18'></div> <div class='ss' id='s_19'></div> </div> <div id="debug"></div> <script type="text/javascript"> //模拟复杂计算 function big(){ //b = (new Date()).getTime(); var i=0; while(i++ <500000){ (new Date()).getTime(); } //alert((new Date()).getTime() - b); } function GetTickCount(){return (new Date()).getTime();} var fps = 25; var SKIP_TICKS = 1000 / fps; var MAX_FRAMESKIP = 5; var next_game_tick = GetTickCount(); var game_is_running = false; var interpolation = 0, loop = 0; var nowFrame = 0; var skipFrame = 0; var speed = 50;// px/s var timer; var time_interval = 10; var x = 0; var $bbbox=$('#block-x'); function start(){ if(game_is_running === true) return; game_is_running = true; next_game_tick = GetTickCount(); timer = setInterval(function(){ loops = 0; while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) { update_game(); next_game_tick += SKIP_TICKS; loops++; skipFrame += loops > 1 ? 1 : 0; //debug(x) //$bbbox.width(x + 10); } interpolation = ( GetTickCount() + SKIP_TICKS - next_game_tick ) / SKIP_TICKS; display_game( interpolation ); },time_interval); } function pause(){ clearInterval(timer); game_is_running = false; } function update_game