你必须使用带有 CCSpriteFrameCache 的精灵表吗?

Posted

技术标签:

【中文标题】你必须使用带有 CCSpriteFrameCache 的精灵表吗?【英文标题】:Do you have to use a sprite sheet with CCSpriteFrameCache? 【发布时间】:2013-05-22 23:37:05 【问题描述】:

查看教程和CCSpriteFrameCCSpriteFrameCache 文档,看起来我需要一个类似于使用TexturePacker 生成的plist。

有没有办法只将单个图像添加到缓存中?

或者用图片创建CCSpriteFrame 的方法?看起来 1.0.0 版支持它,但 2.0.0 版不支持它

谢谢!

【问题讨论】:

【参考方案1】:

简而言之:是的,您可以这样做。但是您不想这样做,因为它不切实际并且浪费时间。 spriteframes 的重点是在纹理图集中定义纹理区域。否则只需使用 spriteWithFile 。但这在性能方面并不能很好地扩展。

迟早你必须开始使用纹理图集,并为此使用一个好的工具(TexturePacker 是我的最爱)。

【讨论】:

同意 TP ... 最全面、最出色的 pvr 格式和压缩效果。正如你所说,可能迟早:) 谢谢!是的,我想我会吸吮它并购买它。哈哈。反正也没那么贵。 =]【参考方案2】:

如果您需要精灵表方面的帮助,可以查看tutorial 他向您展示了如何使用texture packer 并完全为熊制作动画。纹理打包器会自动为您制作 .plist。这很酷。但是,您不需要使用精灵表。我认为,您可以将图像添加到数组中,然后将数组中的图像序列作为动画播放。那个教程是here 此外,CCSpriteFrameCache 所做的只是缓存精灵帧。您可以使用 .plist 文件加载带有帧的 CCSpriteFrameCache,也可以使用 CCSpriteFrame 和精灵帧名称将其加载到其中。看看这个 cocos2d 论坛:here

祝你好运=-)

【讨论】:

是的,我查看了它并且最初正在使用它,但是我的免费试用期已经用完了,所以我想知道如果没有它我是否可以这样做。 =]【参考方案3】:

您不需要纹理打包器来创建 .plist ... 如果您有胃口,vi 就可以了。但是,您可以:

CGRect myRect = CGRectMake(0, 0, 80, 40); 
CCTexture2D *myTexture = [[CCTextureCache sharedTextureCache] addImage:@"myTexture.pvr.gz"];
CCSpriteFrame *fr=[CCSpriteFrame frameWithTexture:myTexture rect:myRect];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFrame:fr name:@"myFunkyFrameName"];

编辑。未经测试,但在 2.0 中可以正常编译,应该可以工作。

【讨论】:

以上是关于你必须使用带有 CCSpriteFrameCache 的精灵表吗?的主要内容,如果未能解决你的问题,请参考以下文章

通过 aws ses 在 node.js 中发送带有附件的邮件

如果你使用 Spring security,你必须使用 taglib 吗?

安装游戏错误提示必须输入带有盘符的完整路径

ruby CarrierWave带有来自雾的备用URL,快速而肮脏。对于将生产数据提取到开发中非常有用,以防万一你必须全力以赴

发送带有希腊字符的电子邮件无法正确显示(使用HTML,Javascript,PHP)

带有 MagicalRecord 的 JSONModel