2012-11-02 19 views
0

我是Chrome Web Apps的初学者,并且正在尝试将Bump'n'Jump的JavaScript/HTML5克隆打包为打包应用程序。我遇到了一堵墙与Chrome的安全策略:Chrome Web应用程序:无法在游戏循环中执行功能

function pump() { 
    while (1) { 

     game_loop(); 
     var now = timeGetTime(); 
     var time_diff = next_time - now; 
     next_time += (1000/60); 

     if (time_diff>0) { 
      // we have time left 
      setTimeout("pump()", time_diff); 
      break; 
     } 
     // debug("frametime exceeded: " + (-time_diff)); 
    } 
} 

它拒绝运行setTimeout("pump()", time_diff);,说

Refused to evaluate script because it violates the following Content Security Policy  directive: "default-src 'self' chrome-extension-resource:". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback. 

的错误是不与代码,因为它在浏览器的Chrome之外, Chrome的安全性似乎并不喜欢它。谁能告诉我为什么它不想跑pump()

回答

4

不知道这是否会帮助,但尝试以下方法:更换setTimeout字符串参数:

function pump() { 
    while (1) { 

     game_loop(); 
     var now = timeGetTime(); 
     var time_diff = next_time - now; 
     next_time += (1000/60); 

     if (time_diff>0) { 
      // we have time left 
      setTimeout(pump, time_diff); 
      break; 
     } 
     // debug("frametime exceeded: " + (-time_diff)); 
    } 
} 

使用字符串为setTimeoutsetInterval执行参数是eval相当于和被认为是不好实践。

+0

这工作得很好!谢谢! – excelangue