我正在編寫一個代碼來移動瀏覽器遊戲中的角色。我設法獲得它必須每秒水平和垂直移動的像素。簡單的Javascript循環,每秒重複
pxsecx是它必須每秒 pxsecy水平移動的像素的數目是相同的,但垂直
基本上它應該+ =他們當前的水平和垂直位置。
我需要循環每秒不斷重複,直到元素位置符合新位置(newx)。
這是據我已經走了:
<body onmousedown="showCoords(event)">
<script type="text/javascript">
function showCoords(evt){
oldx = parseInt(document.getElementById("character").style.left);
oldy = parseInt(document.getElementById("character").style.top);
width = parseInt(document.getElementById("character").style.width);
height = parseInt(document.getElementById("character").style.height);
newx = evt.pageX - width/2;
newy = evt.pageY - height/2;
disx = newx - oldx;
disy = newy - oldy;
diag = parseInt(Math.sqrt(disx*disx + disy*disy));
speed = 50;
secs = diag/speed;
pxsecx = disx/secs;
pxsecy = disy/secs;
while(document.getElementById("character").style.left<newx)
{
document.getElementById("character").style.left += pxsecx;
document.getElementById("character").style.top += pxsecy;
}
}
</script>
一切工作,直到在那裏我不知道該怎麼辦使它工作每一秒的時間。我在這裏測試它:http://chusmix.com/game/movechar.php
我該如何重複一次,所以它的工作原理?
感謝
謝謝您的回答,請你告訴我怎麼把它列入到我的腳本。我嘗試過,但我在javascript中很糟糕。你能粘貼最終的代碼嗎?我不知道如何將它包括在內。非常感謝 – lisovaccaro 2011-05-03 04:52:55
只需用它替換當前的'while'循環即可。 – icktoofay 2011-05-03 05:11:47
在你的if語句中比較的值是不是相同的類型,這有什麼關係嗎? 'if(「100px」<432)'似乎總是返回false。儘管它很接近,但它似乎並不是有效的代碼。你可以仔細檢查?我認爲一旦你的類型是相同的,這將起作用,但不是以當前的格式。 – jmort253 2011-05-03 05:24:00