好吧,看了這個問題三次後,發現沒有什麼真正與我的問題相關,我現在要問。 簡單的落沙玩具滯後
我很好奇,決定嘗試看看我能否在帆布上製作一款非常基本的落砂玩具。
我成功地做到了,因爲「沙子」會像地面一樣堆積在地面上,但由於空氣中的顆粒和地面顆粒之間的碰撞檢測,它會非常迅速地減速。
See for yourself編輯:可能是死鏈接,here's a JsFiddle instead。
通過單擊並按住鼠標按鈕來生成粒子。當你產生了大約200個粒子後,它就會癱倒在地。
for(i in P){
if(P[i].Y<canvas.height-1){
P[i].Y++
for(j in G){//This loop seems to cause the lag
if(P[i].X==G[j].X&&P[i].Y==G[j].Y-1){
G[G.length]={X:P[i].X,Y:P[i].Y}
}
}
}else{
G[G.length]={X:P[i].X,Y:P[i].Y}
}
}
我只是想知道是否有什麼我在做可怕的錯誤;我很確定它不應該滯後那麼糟糕。我也想知道是否有一種方法可以在沒有嵌套循環的情況下做到這一點,但是似乎我能夠完成這項工作的唯一方法是通過檢查每個單個空氣中的顆粒與每個單獨的地面顆粒,從而使其滯後。
如果鏈接被破壞,說出這個詞,我會在這裏發佈整個代碼。
感謝
鏈接轉到的代碼已更改。 –
哦,我應該更新那個不太可能腐爛的鏈接。我會快點做一個jsfiddle。 –