当按下键时,精灵会消失

时间:2013-04-14 05:05:43

标签: javascript jquery html5

我正在努力让我的玩家精灵在我的屏幕上移动,但是当按下一个键时,所有精灵似乎都消失了!我没有在firebug中出现错误,所以我假设sprite没有正确地重绘或者沿着那些线重新绘制。

这是我的播放器代码:

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);

然后在我的主游戏循环中,我有了现在,delta和最后一次以及调用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);
 }

就像我在顶部说的那样,我所有的精灵在按键上都会消失。您可以在上面看到的代码是我为播放器提供的所有代码,因此这里的某个地方就是错误!

我如何通过基于时间的动画制作我的精灵在屏幕上的移动?

由于

修改

另外为了让你知道,我的last_update等于Date.now()我的更新调用之前的行最初是这样的:

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

编辑2 在继续检查时,看起来精灵似乎并没有消失,只是在游戏画面上移动了很远的e.i ...所以另一个猜测是我的计算在某处错了?

1 个答案:

答案 0 :(得分:0)

所有排序的家伙,我的角色正在使用这个小教程!真正易于阅读和理解的初学者。 LINK

专业人士对本教程有何看法?