Javascript 游戏时钟控制小试[讨论]_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3335 | 回复: 0   主题: Javascript 游戏时钟控制小试[讨论]        下一篇 
jfl
注册用户
等级:少校
经验:1112
发帖:95
精华:0
注册:2012-8-10
状态:离线
发送短消息息给jfl 加好友    发送短消息息给jfl 发消息
发表于: IP:您无权察看 2012-8-24 9:28:38 | [全部帖] [楼主帖] 楼主

Html代码
北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司

  1. <html> 
  2.  <head> 
  3.  <meta http-equiv=Content-Type content="text/html;charset=utf-8"> 
  4.  <title>Javascript 游戏时钟小试</title> 
  5.  <script type="text/javascript" src="jquery-1.6.4.js"></script> 
  6.  <style type="text/css"> 
  7.  body{font-size: 14px;} 
  8.  .wrap{border:solid 1px #f60; width:500px; height:300px; position:relative;} 
  9.  .item{border:solid 1px #660; line-height:30px; height:30px;} 
  10.  .red{color:red;} 
  11.  .block{width:10px;height:10px;background-color:#aaa;position:absolute;z-index:10000;line-height:0;font-size:0;} 
  12.  .ss{width:1px;height:14px;background-color:#eee;color:#ff0;line-height:0;font-size:10px;line-height: 14px;margin-top: 1px;} 
  13.  #debug{position:fixed; border:solid 1px #f60; width:600px;height:100%;right:0;top: 0;overflow: scroll;} 
  14.  </style> 
  15.  </head> 
  16.  <body> 
  17.  <a href="javascript:start()">start</a> | 
  18.  <a href="javascript:pause()">pause</a> | 
  19.  addBlock<a href="javascript:addBlock()">[1]</a><a href="javascript:addBlock2()">[10]</a>(<span id="blocks">0</span>) | 
  20.  Frame: <span id='Frame'>0</span> | 
  21.  SkipedFrame: <span id='skipFrame'>0</span> | 
  22.  <a href="javascript:big()">复杂计算</a> | 
  23.  <a href="javascript:$('#debug')">ClearDebug</a> 
  24.  <div class="wrap" id="msg"> 
  25.  <div id="block-x" class="block" style="top:20px;left:0;background-color:#f60;"></div> 
  26.  </div> 
  27.  <div class="wrap"> 
  28.  <div class='ss' id='s_0'></div> 
  29.  <div class='ss' id='s_1'></div> 
  30.  <div class='ss' id='s_2'></div> 
  31.  <div class='ss' id='s_3'></div> 
  32.  <div class='ss' id='s_4'></div> 
  33.  <div class='ss' id='s_5'></div> 
  34.  <div class='ss' id='s_6'></div> 
  35.  <div class='ss' id='s_7'></div> 
  36.  <div class='ss' id='s_8'></div> 
  37.  <div class='ss' id='s_9'></div> 
  38.  <div class='ss' id='s_10'></div> 
  39.  <div class='ss' id='s_11'></div> 
  40.  <div class='ss' id='s_12'></div> 
  41.  <div class='ss' id='s_13'></div> 
  42.  <div class='ss' id='s_14'></div> 
  43.  <div class='ss' id='s_15'></div> 
  44.  <div class='ss' id='s_16'></div> 
  45.  <div class='ss' id='s_17'></div> 
  46.  <div class='ss' id='s_18'></div> 
  47.  <div class='ss' id='s_19'></div> 
  48.  </div> 
  49.  <div id="debug"></div> 
  50.  <script type="text/javascript"> 
  51.  //模拟复杂计算 
  52.  function big(){ 
  53.        //b = (new Date()).getTime(); 
  54.        var i=0; 
  55.        while(i++ <500000){ 
  56.              (new Date()).getTime(); 
  57.        } 
  58.        //alert((new Date()).getTime() - b); 
  59.  } 
  60.  
  61.  function GetTickCount(){return (new Date()).getTime();} 
  62.  
  63.  var fps = 25; 
  64.  var SKIP_TICKS = 1000 / fps; 
  65.  var MAX_FRAMESKIP = 5; 
  66.  var next_game_tick = GetTickCount(); 
  67.  var game_is_running = false; 
  68.  var interpolation = 0, loop = 0; 
  69.  var nowFrame = 0; 
  70.  var skipFrame = 0; 
  71.  var speed = 50;// px/s 
  72.  var timer; 
  73.  var time_interval = 10; 
  74.  var x = 0; 
  75.  var $bbbox=$('#block-x'); 
  76.  
  77.  function start(){ 
  78.        if(game_is_running === true) return; 
  79.        game_is_running = true; 
  80.        next_game_tick = GetTickCount(); 
  81.        timer = setInterval(function(){ 
  82.              loops = 0; 
  83.              while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) { 
  84.                    update_game(); 
  85.                    next_game_tick += SKIP_TICKS; 
  86.                    loops++; 
  87.                    skipFrame += loops > 1 ? 1 : 0; 
  88.                    //debug(x) 
  89.                    //$bbbox.width(x + 10); 
  90.              } 
  91.              
  92.              interpolation = ( GetTickCount() + SKIP_TICKS - next_game_tick ) / SKIP_TICKS; 
  93.              display_game( interpolation ); 
  94.              
  95.        },time_interval); 
  96.  } 
  97.  
  98.  function pause(){ 
  99.        clearInterval(timer); 
  100.        game_is_running = false; 
  101.  } 
  102.  
  103.  function update_game(){ 
  104.        nowFrame++; 
  105.        var i,l; 
  106.        for(i=0,l=arr1.length;i<l;i++){ 
  107.              next(arr2[i]); 
  108.        } 
  109.  } 
  110.  function debug(){ 
  111.        var x=''; 
  112.        for(var j=0,len=arguments.length;j<len;j++){ 
  113.              x+=' | ' + arguments[j]; 
  114.        } 
  115.        $('#debug').prepend(x + '<br >') 
  116.        x = null; 
  117.  } 
  118.  var arr_c = []; 
  119.  function c(interpolation){ 
  120.        arr_c.push(interpolation); 
  121.        while(arr_c.length>20) arr_carr_c = arr_c.slice(1); 
  122.        var i; 
  123.        for(i=0,len=arr_c.length;i<len;i++){ 
  124.        $('#s_'+i).css({width : arr_c[i] * 100 + 50});//.html(arr_c[i]) 
  125.        } 
  126.  } 
  127.  //0,1,2,3,4,5 
  128.  function next(arr){ 
  129.        arr[0] += arr[2] * arr[4] * SKIP_TICKS ; 
  130.        if(arr[0]<0){ 
  131.              arr[0] = 0; 
  132.              arr[2] *= -1; 
  133.        }else if(arr[0]>=490){ 
  134.        arr[0] = 490; 
  135.        arr[2] *= -1; 
  136.  } 
  137.  
  138.  arr[1] += arr[3] * arr[5] * SKIP_TICKS; 
  139.  if(arr[1]<0){ 
  140.        arr[1] = 0; 
  141.        arr[3] *= -1; 
  142.  }else if(arr[1]>290){ 
  143.  arr[1] = 290; 
  144.  arr[3] *= -1; 
  145.  } 
  146.  } 
  147.  
  148.  var arr1 = []; 
  149.  var arr2 = [];//[x,y,1,1,speed_x,speed_y] 
  150.  function display_game(interpolation){ 
  151.        $('#Frame').html(nowFrame); 
  152.        $('#skipFrame').html(skipFrame); 
  153.        var i,l; 
  154.        for(i=0,l=arr1.length;i<l;i++){ 
  155.              //debug(arr2[i][0], arr2[i][1]* interpolation) 
  156.        $(arr1[i]).css({left : arr2[i][0] , top : arr2[i][1]}); 
  157.        } 
  158.       
  159.        c(interpolation); 
  160.        
  161.        //模拟很卡 
  162.        //if(Math.random()>0.99) big(); 
  163.  } 
  164.  
  165.  function addBlock(){ 
  166.        var block = $('<div class="block" id="b'+ arr1.length +'"></div>'); 
  167.        $('#msg').append(block); 
  168.        var a = Math.random() * speed / 1.1 + 2; 
  169.        var b = Math.sqrt(speed * speed - a * a); 
  170.        arr2.push([0,0,1,1,a/1000,b/1000]); 
  171.        arr1.push(block); 
  172.        block = null; 
  173.        $('#blocks').html(arr1.length); 
  174.  } 
  175.  function addBlock2(){ 
  176.        var _i=0; 
  177.        while(_i++ <10) addBlock(); 
  178.  } 
  179.  
  180.  </script> 
  181.  </body> 
  182. </html> 




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论