2013-12-03 34 views
0

我想實現一個簡單的反彈球,比如鍵盤輸入,但某些功能不能正常響應按鍵輸入。例如,如果我試圖阻止整個運動,但它的鍵盤精度並不總是相同。我想這可能是由於循環,我的意思是,因爲我要求在一個循環中輸入,電腦答案並不取決於我按下按鍵的那一刻一樣。此外,我試圖暫停循環設置一個條件來調用其自身內部的循環,而當我使用鼠標時這是工作的,當我使用鍵盤時它不會。對HTML5畫布並不總是響應

你可以看到這裏的代碼,涉及鍵是「d」開始運動並停止它,「s」和「a」到速度降下來,加快,箭頭移動和空間來暫停。暫停根本不起作用。它暫停動畫,但不重新加載。

link to pen

非常感謝你。

回答

0

我有沒有跟你codepen快速播放和得到它通過完全刪除logicLoop,並把支票上d鍵在animationFrame循環工作:

function graphicLoop(){ 
    context.clearRect(0,0,canvas.width,canvas.height);  // Clean the canvas 
    draw(); 
    requestAnimationFrame(graphicLoop); 

    if(keys[68]){ 
     update(); 
    } 
} 
graphicLoop(); 
+0

但這不同的東西。我不想讓球在按下按鍵時移動,而是按照我的代碼(遇到識別輸入時遇到的麻煩)停止或按動一次。另一個問題與空間條有關,因爲它凍結但不解凍。 – pablobordons

+0

我明白了。無論如何,我會推薦使用一個使用requestAnimationFrame的中央循環,並從那裏調用logicLoop函數。也可以嘗試在一個按下按鍵的函數中觸發onkeydown,而不是檢查循環中的按鍵是否關閉。 – imcg