所以我用 requestAnimationFrame 写了一个基本的游戏。它重绘画布并监听键盘输入并相应地以像素/秒移动播放器。我的问题是,给定一个包含 9 帧的精灵表,我如何在玩家行走时创建这个动画?基本上 if(walking){ 以给定的速率循环遍历这九帧}。我了解游戏循环是如何工作的,而不是如何为精灵表设置动画。
问问题
252 次
1 回答
0
有动画本身的库,但你自己很容易。
你需要使用drawImage:
ctx.drawImage(image, sx, sy, sw, sh);
假设精灵表是水平格式:
var frame = 0;
ctx.drawImage(image, startX+(spriteWidth*frame), startYy, spriteWidth, spriteHeight);
只需根据您希望逐步完成动画的节拍数或秒数更新帧。这可以是评论中建议的任何方式。
模函数将保持frame
在界限内:
frame = frame % numberOfFrames;
我更喜欢只制作一个动画精灵类并使用它。它更有趣。这就是它如何工作的基础。希望有帮助。
于 2013-01-13T05:17:18.523 回答