如何区分ios中的动画和单个精灵表?

Posted

技术标签:

【中文标题】如何区分ios中的动画和单个精灵表?【英文标题】:how to differentiate animation from single sprite sheet in ios? 【发布时间】:2016-02-18 11:34:12 【问题描述】:

我正在开发在没有cocos2D 帮助的情况下使用精灵表的应用程序。

我使用下面的图片作为精灵表

在弓图片中有许多不同的图像。我想让它们在不同的位置动画

我已经按照这个教程,但它只有一个动画

UIKit-TexturePacker

我想在没有 cocos2d 帮助的情况下实现这一点(使用 UIKIT)。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你有两个选择:

艰难的路 您按原样获取精灵表并提取精灵的坐标和大小。 有了这些信息,您必须使用数据创建一个 .plist 文件:

<key>green_bird</key>
<dict>
    <key>x</key><real>2</real>   <!-- x position in the sheet -->
    <key>y</key><real>259</real> <!-- y position in the sheet -->
    <key>w</key><real>126</real> <!-- width in the sheet -->
    <key>h</key><real>255</real> <!-- height in the sheet -->
    <key>oX</key><real>13</real> <!-- offset in the sprite, x-->
    <key>oY</key><real>2</real>  <!-- offset in the sprite, y-->
    <key>oW</key><real>150</real> <!-- original width of the sprite -->
    <key>oH</key><real>261</real> <!-- original height of the sprite -->
</dict>

加载器处理移除了精灵周围的透明度。这就是 oX、oY、oW 和 oH 值的来源。它们为您提供精灵的原始大小和原始精灵中的位置。您可以将它们留在 oX=0、oY=0、oW 和 oH 与 w 和 h 相同。

简单的方法

您使用一些图形软件(Photoshop、Gimp 等)并从精灵表中分割精灵。

在切割时对齐精灵:使相同动画的所有精灵大小相同。检查它们是否很好地重叠。如果你不这样做,当你想将精灵用作动画时,你会遇到麻烦。他们会颤抖。你不想这样。

最后给它们起个好听的名字:red_bird_01.png、red_bird_02.png等等。

现在将它们拖放到 TexturePacker 上。它将为您重新创建布局 - 包含在动画中使用工作表所需的所有信息。

由于您使用的是教程中的加载程序代码,您还可以打开修剪 - 这会消除透明度 - 重新打包的精灵表将比原始的小得多。

顺便说一句。有一个教程解释了您在 github 上找到的示例代码中的详细信息: https://www.codeandweb.com/blog/2013/05/16/uikit-animations-with-texturepacker

关于游戏开发的最后一句话

如果你想深入研究游戏开发,我真的建议你获得一些游戏开发框架——cocos2d、cocos2d-x、spritekit,...它们会让你的生活变得更轻松。开始可能需要一些时间 - 但他们更有效地处理图形内容,还包含物理引擎和所有其他所需的东西。 在 UIKIT 之上从头开始构建它不是一个好主意。

【讨论】:

以上是关于如何区分ios中的动画和单个精灵表?的主要内容,如果未能解决你的问题,请参考以下文章

在 Sprite Kit iOS 中使用一个图像精灵表

从精灵表中以 sfml 动画精灵

如何修复我的 html/javascript 代码来为精灵表设置动画?

当按下不同的键时如何更改精灵表中的帧。 XNA

在 Java 中读取精灵表的最佳方法是啥?

更改正在动画的精灵表时 HTML5 Canvas 挂起(逐帧播放视频)