$player
位於屏幕的中心,並且可以在連續移動鼠標角度方向後以360度移動,當我移動它時,還會在相反方向更改$map
的位置,在保持中央的球員,創造了地圖中的「移動」的效果......更改元素及其父元素在javascript中的位置
這是鼠標按下觸發:
var top1 = $map.offset().top;
var left1 = $map.offset().left;
var top2 = ($player.offset().top - $player.height()/2) - ($map.offset().top);
var left2 = ($player.offset().left - $player.width()/2) - ($map.offset().left);
if(interval1 == 'false'){
interval1 = setInterval(function(){
var speed = 1;
var deltaX = Math.cos(angle * Math.PI/180) * speed;
var deltaY = Math.sin(angle * Math.PI/180) * speed;
$map[0].style.left = (left1 -= deltaX)+'px';
$map[0].style.top = (top1 -= deltaY)+'px';
$player[0].style.left = (left2 += deltaX)+'px';
$player[0].style.top = (top2 += deltaY)+'px';
}, 1);
}
我做這個鼠標鬆開:
clearInterval(interval1);
interval1 = 'false';
問題是我每次開火時都會給玩家增加一些小的空白,所以每次點擊它都會從中心移動一點......
我該如何解決這個問題?我無法弄清楚什麼會產生差距...
它可能無法解決您的問題(您的示例不是[mcve]),但不要移動這兩個對象,無論如何,將浮點轉換爲整數時會出現錯誤 - 爲什麼會變得更糟?只要移動地圖。 – Tibrogargan
顯示的代碼永遠不會清除間隔。如果您在每個mousedown事件*上創建了新的時間間隔,而沒有*取消之前的時間間隔,那麼您將遇到問題。 – nnnnnn
@Tibrogargan我需要更新玩家位置,我不能只移動地圖。我怎樣才能修正浮動/整數轉換? – neoDev