【问题标题】:How to combine CCSpriteBatchNode with CCAnimation?如何将 CCSpriteBatchNode 与 CCAnimation 结合起来?
【发布时间】:2012-03-17 09:02:39
【问题描述】:

我一直在努力解决这个问题,但我在文档、论坛或这里没有找到任何好的解释,所以这里是:

我可以将 CCSpriteBatchNode 与 CCAnimations 结合使用吗?如果是这样,怎么做?能给个代码例子吗?

我知道 CCAnimation 可以使用来自多个不同缓存纹理 (CCTexture2D / CCTextureCache) 的帧来定义,但 CCSpriteBatchNode 只能引用一个纹理。

我猜这相当于几个单独的子问题:

  1. 我可以用 CCAnimation 为我小时候交给 CCSpriteBatchNode 的 Sprite 设置动画吗?那仍然会给我批量速度优势吗?如果 CCAnimation 引用单独纹理上的帧,是否会发生错误?

  2. 理论上,我可以使用来自不同纹理的帧来定义动画,因此它们必须来自不同的 CCSpriteBatchNode,对吗?还是那不可能?

  3. 我能否在一个 CCSpriteBatchNode 上拥有多个不同的 sprite,每个都调用 CCAnimations,其帧在该 Batch 节点上定义,全部来自同一个 CCSpriteBatchNode 的纹理?

感谢任何可以花一分钟时间向我解释这一点的人!

【问题讨论】:

    标签: objective-c ios cocos2d-iphone


    【解决方案1】:
    1. 您可以为作为 CCSpriteBatchNode 一部分的精灵设置动画。您所说的“批处理速度优势”是进行的 opengl 调用的数量。如果您的所有精灵都使用相同的 CCSpriteBatchNode,那么您的调用次数就会减少。您的 CCAnimation 基本上只是按顺序播放具有延迟的精灵。您不能将精灵添加到不属于同一纹理的 CCSpriteBatchNode 中。这是您可以尝试自己而不是问这个问题的事情。

    2. 我认为您不了解 CCSpriteBatchNodes 和 CCAnimations 的工作原理。它们是两个不同的东西。您的动画可以引用属于不同纹理的精灵,但如果您正在制作动画的精灵位于 spritebatchnode 上,那么您应该只使用属于该纹理的精灵为其制作动画。

    3.是的。

    您真的应该花一些时间阅读 cocos2d 论坛以及其他教程,因为这些都是基本问题。之后,您编写代码会容易得多。 还有几本关于 cocos2d 的书籍涵盖了基础知识。

    【讨论】:

    • 感谢 Pterie,自己发现了。我确实阅读了很多关于这个主题的文档,唉,技术差异的确切细节只有在你查看源代码后才会变得清晰。
    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-04
    • 2021-06-03
    相关资源
    最近更新 更多