(function () { if (typeof Mario === "undefined") window.Mario = {}; var Sprite = (Mario.Sprite = function (img, pos, size, speed, frames, once) { this.pos = pos; this.size = size; this.speed = speed; this._index = 0; this.img = img; this.once = once; this.frames = frames; }); Sprite.prototype.update = function (dt, gameTime) { if (gameTime && gameTime == this.lastUpdated) return; this._index += this.speed * dt; if (gameTime) this.lastUpdated = gameTime; }; Sprite.prototype.setFrame = function (frame) { this._index = frame; }; Sprite.prototype.render = function (ctx, posx, posy, vX, vY) { var frame; if (this.speed > 0) { var max = this.frames.length; var idx = Math.floor(this._index); frame = this.frames[idx % max]; if (this.once && idx >= max) { this.done = true; return; } } else { frame = 0; } var x = this.pos[0]; var y = this.pos[1]; x += frame * this.size[0]; ctx.drawImage( resources.get(this.img), x + 1 / 3, y + 1 / 3, this.size[0] - 2 / 3, this.size[1] - 2 / 3, Math.round(posx - vX), Math.round(posy - vY), this.size[0], this.size[1], ); }; })();