У меня проблема с анимацией холста. Я работаю с this tutorial. Это довольно просто, но теперь я хочу сделать анимацию с 60 кадров в секунду. Я пробовал setInterval(Update, 1000/60)
, и, конечно, он работает, но теперь есть проблема с спрайтом. Его анимация слишком быстрая. Есть ли способ сделать 60 кадров в секунду и замедлить анимацию символьного спрайта (чтобы выглядеть более естественным)?JavaScript анимация анимации холста
Прошу прощения, что у меня нет живого примера, но создать немного без ftp для спрайтов немного сложно.
код:
var canvas;
var ctx;
var dx = 10;
var x = 30;
var y = 0;
var WIDTH = 1000;
var HEIGHT = 340;
var tile1 = new Image();
var posicao = 0;
var NUM_POSICOES = 3;
function KeyDown(e){
switch (e.keyCode) {
case 39:
if (x + dx < WIDTH){
x += dx;
posicao++;
if(posicao == NUM_POSICOES)
posicao = 1;
}
break;
case 37:
if (x + dx < WIDTH){
x -= dx;
posicao++;
if(posicao == NUM_POSICOES)
posicao = 1;
}
}
}
function KeyUp(e){
posicao = 0;
}
function Draw() {
tile1.src = posicao+".png";
ctx.drawImage(tile1, x, y);
}
function LimparTela() {
ctx.fillStyle = "rgb(233,233,233)";
ctx.beginPath();
ctx.rect(0, 0, WIDTH, HEIGHT);
ctx.closePath();
ctx.fill();
}
function Update() {
LimparTela();
Draw();
}
function Start() {
canvas = document.getElementById("canvas");
ctx = canvas.getContext("2d");
return setInterval(Update, 1000/60);
}
window.addEventListener('keydown', KeyDown);
window.addEventListener('keyup', KeyUp);
Start();
Вы всегда можете добавить дополнительные кадры в спрайт. –
Пожалуйста, покажите нам хотя бы ваш код (или соответствующие его части), это нормально без живой демонстрации. – Bergi
вы всегда можете показать спрайт в более чем одном кадре, но он не будет выглядеть гладко. – Bergi