我正在制作一个小型马里奥游戏。手写体精灵动画
但我不知道如何动画精灵。按照实施例,我有一个运行mario.gif文件(马里奥未在GIF捉迷藏)
Click here for the mario picture.
图片是60×20个像素。目前,这是我的代码。
class Character {
public y_: number;
public x_: number;
public nFrames: number = 30;
constructor(public _x: number, public _y: number) {
this._x = _x;
this._y = _y;
};
sprite: HTMLImageElement;
setSpriteUrl(input: string) : void {
this.sprite = new Image();
this.sprite.src = input;
}
drawSprite(): void {
ctx.save();
ctx.beginPath();
ctx.drawImage(this.sprite, 0, 0, 15, 20, this._x, this._y, 20, 20);
ctx.restore;
}
}
和
var mario = new Character(40, 50);
mario.setSpriteUrl("graphics/mario/small/Running-mario.gif");
画面的宽度之后是60个像素,有4个运行马里奥的图像。图片的高度也是20像素。
60/4 = 15
ctx.drawImage(this.sprite, 0, 0, 15, 20, this._x, this._y, 20, 20);
这会让我觉得它我可以从15到30,它会选择下一个马里奥的形象。相反,它让我从图片中跑出2个马里奥。
它是如何工作的?如何选择马里奥的每个运行阶段?
如果这样做了,精灵应该用for循环和定时器来动画吗?对我来说,这似乎不是最好的做法..因为我有更多的精灵动画,然后只有马里奥和跑步。
考虑到你试图在画布上画一个GIF,我想你的问题可能是这个问题的重复http://stackoverflow.com/questions/3062229/animated-gif-in-html5-canvas – toskv
在这个问题中,这个人问起他的动画gif。我的gif文件不是动画,而是一幅普通的图片(请参阅链接)。此人也可以回答图书馆。我不是在寻找一个图书馆,我想了解(教育目的) – Romano
感谢您的澄清,我会收回我的近距离投票。 :) – toskv