Така че аз съм в най-началния етап на създаване на моята първа игра в платформен стил в html5. Досега съм внедрил само движение наляво и надясно и няма "гравитация" или откриване на сблъсък.
Обаче вече срещнах проблем.
Ако отидете наляво или надясно за кратък период от време, „характерът“ действа по предназначение (използвам символ свободно, тъй като картата всъщност се движи). Ако обаче задържите клавиша натиснат, картата се движи твърде бързо.
Предполагам, че проблемът е, че слушателят на събития на натискане на клавиши слуша през цялото време, там за преместване на картата се движи преди всеки тик или кадър на играта.
Така че въпросът ми е как мога да накарам натискането на клавиша да увеличава отместването на картата само при всеки тик на играта (20 милисекунди).
Ето моя JSFiddle: ЩРАКНЕТЕ ТУК
document.addEventListener('keydown',function(event){
var dir = event.which;
if(dir == directions.LEFT){
mapOffsetX += mapOffsetDistanceX;
event.preventDefault();
};
if(dir == directions.RIGHT){
mapOffsetX -= mapOffsetDistanceX;
event.preventDefault();
};
});
document.addEventListener('keyup',function(event){
var dir = event.which;
if(dir == directions.LEFT){
mapOffsetX -= mapOffsetDistanceX;
};
if(dir == directions.RIGHT){
mapOffsetX += mapOffsetDistanceX;
};
});
initFloorObject(100,c.height/2,300,20,0,0,0,1);
var myInt = setInterval(function(){
clearScreen();
for(var i=0;i<floorObject.length;i++){
floorObject[i][0] = parseInt(floorObject[i][0])+mapOffsetX;
};
drawChar();
drawFloorObjects();
},20);