-
Notifications
You must be signed in to change notification settings - Fork 1
/
spritesheet.js
50 lines (44 loc) · 1.23 KB
/
spritesheet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
function Spritesheet(context, imagem, linhas, colunas) {
this.context = context;
this.imagem = imagem;
this.numLinhas = linhas;
this.numColunas = colunas;
this.intervalo = 0;
this.linha = 0;
this.coluna = 0;
this.fimDoCilo = null;
}
Spritesheet.prototype = {
proximoQuadro: function() {
var agora = new Date().getTime();
// Se ainda não tem último tempo medido
if (! this.ultimoTempo) this.ultimoTempo = agora;
// Já é hora de mudar de coluna?
if (agora - this.ultimoTempo < this.intervalo) return;
if (this.coluna < this.numColunas - 1) {
this.coluna++;
}
else {
this.coluna = 0;
// Avisar que acabou um ciclo!
if (this.fimDoCiclo) this.fimDoCiclo();
}
// Guardar hora da última mudança
this.ultimoTempo = agora;
},
desenhar: function(x, y) {
var largura = this.imagem.width / this.numColunas;
var altura = this.imagem.height / this.numLinhas;
this.context.drawImage(
this.imagem,
largura * this.coluna,
altura * this.linha,
largura,
altura,
x,
y,
largura,
altura
);
}
}