2012-11-02 15 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