有多种方法可以处理您所描述的主题。我将提供一些概述,然后希望提供一些资源,这些资源可以为您提供示例以帮助您入门。
本质上,基于精灵的动画围绕着一系列相似的图像,当它们按顺序显示时,会产生运动的外观,类似于翻书。
诀窍是了解您的精灵何时移动(因此应该被动画化) - 以及它何时静止不动(因此不应该被动画化)。换句话说 - 假设你的游戏角色只应该在你按住的时候移动▲</kbd>, ▶</kbd>, ▼</kbd> or ◀, you need to detect when one of those keys starts and stops being pressed, so that you can start/stop your animation accordingly.
想象一下,为了简单起见,您只有 2 个精灵。第一个(左,下)代表你的角色静止不动,第二个代表你的角色中步(右,下):
当。。。的时候▶</kbd> button is not pressed, you simply continually display the first image. When the ▶</kbd> button is pressed, you toggle between the two every x
milliseconds (depending on how fast you want the animation to appear).
动画 .gif是一种格式,您可以在其中包含一系列简单的图像帧,这些图像帧旨在作为一个系列显示(因此会产生动画的错觉)。如果您要使用这种格式创建精灵,您可以使用类似于此 SO 讨论中的代码,它提供了一些示例代码,说明如何使用 C# 为动画 .gif 设置动画并控制其开始/停止。
或者,如果你想使用一个精灵文件(就像我上面包含的那个),你可以使用类似于这个 CodeProject 代码的东西,它专注于 GDI 与 Windows 环境的交互,以便提取和绘制精灵的一部分到目标画布。通过每x
毫秒重新绘制一次(如上所述),这可以提供相同的效果。
要记住几件事:
您需要处理精灵的透明度(例如,上面的马里奥精灵具有透明背景) - 以便您的游戏环境的背景显示出来。如果使用 GDI - 这一切都与您如何调用绘画方法有关。如果使用动画 .gif - 使用的方法取决于您在窗口上的显示方式。
有关一些其他资源/示例/参考,请查看以下资源:
对于 Sprite 开发: