【问题标题】:Automatic sprite animation with Cocos2d使用Cocos2D自动精灵动画
【发布时间】:2013-01-17 21:19:10
【问题描述】:

我在 Cocos2d 中有一个代表我的角色的类。
我已经导出了 spritesheet + .plist 文件。

角色有多个动画。

框架简称为“Character_1.png”
最多四个。这是基本的行走动画。

在许多精灵动画教程中,我发现了这个示例代码,它循环通过精灵帧缓存并将其添加到数组中,以便您可以对其进行动画处理:

for(int i = 1; i <= 4; ++i) {
    [animationFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Character_%d.png", i]]];
}

但是,因为我的大多数精灵都会像这样被动画化,所以我想把它委托给一个超类。

我想把它称为

spriteWithAnimations:(NSArray *)animationNames

然后我会查看它们,就像上面的示例一样。

所以作为数组中的一个参数,我会得到一个字符串@"Character_%d",我会做一个while循环并检查文件是否存在,而当我把它添加到数组中时。

唯一的问题是,我无法检查框架 "Character_05.png" 是否存在,因为CCSpriteFrameCache 没有这样的方法。

这通常是如何解决的?

【问题讨论】:

  • 检查 Kobold2D www.kobold2d.com 中的 CCAnimation 扩展类,它已经完成了您的计划
  • 对不起,我已经在概念中定义了我使用的是Cocos2d。

标签: iphone objective-c cocoa cocos2d-iphone


【解决方案1】:

如果 CCSpriteFrameCache 为给定的帧名称返回 nil,您就知道它不存在。不优雅,但很有效。

【讨论】:

  • 我认为它崩溃了,而不是返回 nil 值。
  • 好的,我测试了它,它确实有效,但它仍然打印出一个错误......没有其他方法可以做到这一点吗?
  • 对不起,我没有尽快回复你。你是对的,日志只是一个调试日志,部署时它不会记录任何内容。感谢您的帮助!
猜你喜欢
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2014-05-16
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多