2015-10-10 49 views
0

我試圖創建一個像pacman(這是一個圖像),這將出現在隨機位置的幽靈。這裏是我的代碼函數不被稱爲

function ghost(){ 
     while (true){ 

     e1.style.top = Math.round(Math.random() * document.body.scrollHeight) + 'px'; 
     document.body.appendChild(e1); 

     } 

     } 
<body onload="gameLoop();" onkeydown="" onkeyup="moveSelection(event)" onload="ghost();"> 

我希望它無限地並排運行。

+0

請注意,你在''上有兩個'onload',它應該是這樣的:'onload =「gameLoop(); ghost();」' –

+0

你不能在javascript中編寫遊戲循環。 Javascript是單線程的,所以你的循環將繼續迭代,而不是給UI更新的時間, –

回答

0

你不能在Javascript中編寫像這樣的無限循環,因爲它會永遠運行,阻止瀏覽器執行其他任何操作,從而有效地「掛起」瀏覽器,直到瀏覽器最終中止腳本。瀏覽器中的主要Javascript執行是單線程的,因此如果你像這樣永遠循環,那麼其他任何事情都無法運行。

取而代之,您可以使用setInterval()定時器隨時間更新位置。如果您可以用文字描述您想要完成的內容,我們可能會更具體地幫助推薦代碼。

另外,body標籤上只能有一個onload屬性,因此您既可以從一個屬性調用兩個函數,也可以創建一個調用多個事物的新函數並引用onload屬性中的新函數。

這裏有一個簡單的使用setInterval()

// something must set the e1 variable first 
document.body.appendChild(e1);   
setInterval(function() { 
    e1.style.top = Math.round(Math.random() * document.body.scrollHeight) + 'px'; 
}, 5000); 

注意,根據您的代碼,這將導致圖像只是跳來跳去在屏幕上隨機進入向上/向下位置,每隔一段時間。

+0

謝謝你的工作(Y)..! – puffles