我正在使用vanilla tilemaps,我不确定是否有与tilemaps有关的软件,但是如果有确定我只是使用普通的javascript,我有一个问题,但我想移动x的一个按下按钮时播放器,但它不移动,播放器为绿色,并由贴图上的数字4标识。
它注册我按下按钮(在控制台中),但根本不移动播放器,任何人都可以指出问题吗?看看第62-89行,那些除了一些全局变量之外主要发生错误。
这里是jsfiddle的链接,我使用了这个,因为我需要显示块不移动。 http://jsfiddle.net/8jr2ha3h/
var playerY = 0;
var playerX = 0;
var moveLeft = 65;
var moveRight = -65;
//THE PLAYER
player.onload = function(){
for(var i = 0; i < mapArray.length; i++){
for(var j = 0; j < mapArray[i].length; j++){
if(mapArray[i][j]==4){
context.drawImage(player, playerX, playerY, 45,37);
}
playerX+=45;
}
playerX = 0;
playerY +=37;
}
};
//KEY FUNCTIONS
document.onkeydown = function(e) {
//identifying that it's a window event.
e = e || window.event;
switch(e.which || e.keyCode) {
//37 is key for left arrow.
case 37:
{
playerX = playerX - moveLeft;
console.log(playerX);
console.log('left');
}
break;
}
}
答案 0 :(得分:0)
好像你只是在player.onload()
中吸引玩家。您可能希望将所有渲染代码放在一个render()
函数中,并可能在player.onload()
中调用它,然后在屏幕发生变化时调用该函数(玩家移动,敌人移动) / die,地图因任何原因而发生变化......您需要重绘的原因有很多。
你可能想在这里考虑一个主要的游戏循环,这将(非常简单地)成为一个效果:
while (true) {
checkForInputFromThePlayer(); // this can update player coordinates, etc
doSomeAI(); // Move some enemies around, have them attack the player
render();
}