我写作的基本精灵引擎对于我自己的游乐场所和得到更好的认识Java的2d API。目前,我正在使用的大量独立。png文件与透明的背景来表示的各种各样的精灵和的不同框架的动画,我需要。最真实世界的游戏发展项目似乎使用的'精灵表'包含多个精灵或帧画的内的一个单一的文件。还有,而不是使用本地图像的透明度的支持,人们经常提名一个任意的色彩,不会出现在精灵的调色板来以透明的颜色。一个人如何管理文件这样的通过程序?

  • 你怎么知道在那里一个精灵 开始的下一开始
  • 你怎么处理透明度

可能还有其他因素,我不想在这里,所以我可以添加到名单上因为我想的事情或者作为人提出建议(请不要这样的意见).

有帮助吗?

解决方案

我目前使用XML文件的产生通过一个简单的sprite器储存的精灵作为一个集合的(任选活动)构成,这是又一个的收集框架或细胞。框架储存每架的信息,如x和y偏移的框架薄板、细胞的宽度和高度,以及任何变换(调整/转/hue/etc.).构成储存个框架和动画信息(速度,例如),以及构成的名字容易识别他们在程序(的英雄。造成=sprite.造成["standing_right"]).精灵作为一份文件,根举行的几个姿势,例如构成对于每个面对的方向。

一个较不灵活的替代我之前使用的是指定固定的尺寸,对于细胞和床单和计算框架的偏移量和大小的根据这些价值观(例如宽总是32素,因此第三角色是在32*2).后来我开始指定这些尺度在文件名称(例如sprite_name_32x64.png)对精灵这不符合固定电池的尺寸。我喜欢你的新办法上,特别是用一个简单的编辑补充数值对我来说并允许我使用精灵作为模板,用于其他精灵。

我用的是阿尔法和透明度信息存储在巴布亚新几内亚图像直接,所以我不需要担心储存其他地方,尽管其他做法将是选择一个固定数值每sprite和存储的地方,使用最左边的像素造成的,如果你知道它始终是空的,使用特定的调色板条目如果你用那些精灵的面具,或者你有什么。

其他提示

不java但一般可以让你的所有的精灵在大小相同。因此,你将能够产生你的精灵在你的游戏(或应用程序)有一个简单的循环。

但是对于不同大小精灵可能有问题sprite表大小(可能比预期更大).所以你必须定义xml函文件sprite表找到你的图像精灵在你的代码。你可以使用sprite片编辑(有很多他们,我使用 精灵师)快速和简便的方法来生成sprite表和坐标数据。

让你的精灵片知道的大小和数量的每一个序列。

抓住一个缓冲的像片,并使用这样的事情:

currentframe=spritesheet.getSubimage(x, y, w, h); 

你的x和y将改变基于该框架。保持宽和高度相同的做事情容易在自己。

忘了想要保持整个游戏的一片。它的坚果和难以管理。使用一个新的png的每个动画顺序。如果你的肛门节约空间的仅仅创建移动权利的动画只是翻转缓冲图像真正的时间向左移动。

Java会读png文件与阿尔法所以不用担心透明的颜色。画中的一切png图像。使用Photoshop或Gimp.

谷歌搜索java图像TYPE_INT_ARGB

嗯,因为他们大多数都是定制的,这些细节都达到实现者。你会一般具有的文件开始有头信息,包含的详细信息的高度/宽度和编码、透明度,等等。

很多时候的事情都在一个文件,因为它非常昂贵的开阅读多个文件相比较为开放/读一个文件。许多游戏引擎使用拉链或"ziplike"的文件0压缩到治疗一个单一的文件作为一个文件系统。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top