2013-04-14 29 views
0

我目前正致力於讓我的玩家精靈在我的屏幕上移動,但是當按下某個按鍵時,所有精靈似乎都會消失!我沒有錯誤出現在螢火蟲中,所以我假設這個精靈沒有被正確地重新繪製或沿着這些線條進行了重繪。當按下按鍵時,雪碧消失javascript

這是我爲我的球員代碼:

function Player() 
{ 
    var sprite = new Sprite(), 
    player, 
    x, 
    y, 
    w = sprite.width, 
    h = sprite.height, 
    speed = 4; 


this.init_Player = function(pos_X, pos_Y){ 
    player = sprite.load("player"); 
    x = pos_X; 
    y = pos_Y; 
}; 

this.update = function(delta) { 

    var calculated_speed = (speed * delta) * (60/1000); 

    $(document).keydown(function(e) 
    { 
     var cancel_default = (e.which === 32 || (e.which > 36 && e.which < 41)); 
     cancel_default && e.preventDefault(); 

     if(e.keyCode == 37){ 
      x -=calculated_speed; 
     } 
     else if(e.keyCode == 38){ 
      y -=calculated_speed; 
     } 
     else if(e.keyCode == 39){ 
      x +=calculated_speed; 
     } 
     else if(e.keyCode == 40){ 
      y +=calculated_speed; 
     } 
    }); 



}; 

this.draw = function() { 
    ctx.drawImage(player,x, y, w ,h); 
}; 
} 

球員在我的主要遊戲創建JavaScript文件,像這樣:

player.init_Player(location_X,location_Y); 

然後在我的遊戲主循環我有現在,增量和最後一次以及對player.update和player.render的調用如下所示:

function update(){ 

    now = Date.now(); 
    delta = now - last_update; 

    ctx.clearRect(0,0,canvas.width,canvas.height); 

    gameGUI.update(); 

    player.update(delta); 
    player.draw(); 

    last_update = now; 
    setTimeout(update,1); 
} 

就像我在頂部所說的那樣,我的所有精靈都會在按鍵上消失。你可以在上面看到的代碼是我爲玩家提供的所有代碼,所以在這裏的某個地方是bug!

我該如何完成讓我的精靈在基於時間的動畫,如我設置的屏幕上移動?

感謝

編輯

也要讓你知道,我有LAST_UPDATE等於Date.now()我更新呼叫前行最初被提出,像這樣:

function game_init(state) { 
    game_settings(state); 
    last_update = Date.now(); 
    update(); 
} 

編輯2 經過持續的檢查,似乎這個精靈畢竟沒有消失,只是把遊戲的碎片移動得很遠ñ...所以另一個猜測是我的計算在某個地方是錯的?

+0

我的猜測是last_update最初是0。你的第一個三角洲將是巨大的(即它現在將等於)並導致屏外繪圖。 –

+0

小心輸入錯誤。大寫功能名稱'播放器'和通話'播放器' –

+0

所以最好的方法來解決這個@SB? –

回答

0

所有排序的傢伙,我有我的角色移動使用這個小教程!真正容易閱讀和理解的初學者。 LINK

專業人士對本教程有何看法?