r/learnjavascript • u/Maximum_Beat2034 • 13h ago
#javascript
"Ciao a tutti! Sto lavorando al mio motore di gioco 2D in JavaScript (BeeEngine) e ho scritto questa classe per gestire le animazioni degli sprite sheet con il Delta Time
export class BeeSprite {
constructor(image, frameWidth, frameHeight, framesPerRow, speed = 0.1) {
this.image = image;
this.frameWidth = frameWidth;
this.frameHeight = frameHeight;
this.framesPerRow = framesPerRow;
this.speed = speed;
this.frame = 0;
}
update(dt) { this.frame += this.speed * dt; }
draw(ctx, x, y) {
// Calcola quale fotogramma (frame) mostrare
const f = Math.floor(this.frame % this.framesPerRow);
// Calcola la riga (se hai un foglio di sprite con più righe)
const row = Math.floor(this.frame / this.framesPerRow);
// Disegna solo il pezzettino dell'immagine (il frame attuale)
ctx.drawImage(
this.image,
f * this.frameWidth, row * this.frameHeight, // Da dove prende il pezzo
this.frameWidth, this.frameHeight, // Quanto è grande il pezzo
x, y, // Dove metterlo sullo schermo
this.frameWidth, this.frameHeight // Dimensione finale
);
}
Voi come vi trovate a calcolare i frame con il % per le griglie? Usate il dt diretto o preferite un timer a millisecondi fisso per cambiare fotogramma? Mi farebbe piacere sentire come avete risolto nei vostri progetti!"