2010-04-21 139 views
5

可以说我有4个图像,并且我想使用这4个图像来动画一个角色。这4个图像代表走路的角色。只要我按下键移动动画,但我想要动画重复一次,但是当我压下它时停止动画。如果你不知道它,它不需要是SFML特有的,只有基础理论才能真正帮助我。如何在SFML中为精灵创建动画

谢谢。

回答

10

你可能想要一些简单的状态机。当按键关闭时(请参阅sf::Input's IsKeyDown method),将字符置于“动画”状态。当键未关闭时,使字符处于“未动画”状态。当然,你总是可以跳过这个“状态”,只是做下面提到的事情(具体取决于你在做什么)。

然后,如果角色处于“动画”状态,则获取下一个“图像”(有关该图像的更多细节,请参阅下一段落)。例如,如果您将图像存储在简单的4元素数组中,则下一张图像的格式为(currentIndex + 1) % ARRAY_SIZE。根据你在做什么,你可能想要将图像帧存储在更复杂的数据结构中。如果角色不处于“动画”状态,那么你不会在这里做任何更新。

如果您的“4张图片”在同一个图片文件中,您可以使用sf :: Sprite的SetSubRect方法更改所显示图片的部分。如果你实际上有4个不同的图像,那么你可能需要使用sf :: Sprite的SetImage方法来切换图像。

+1

你会如何执行一个帧率,以便动画不会发生得太快? – andrewtweber 2013-09-07 20:34:45