首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCSpriteBatchNode或NSMutableArray

CCSpriteBatchNode或NSMutableArray
EN

Stack Overflow用户
提问于 2012-02-04 05:05:32
回答 2查看 160关注 0票数 0

我目前正在尝试创建一个无休止的滚动背景,其中有一个角色,他跳上跳下,收集沿途的物品。我的问题出在需要创建然后移动的项目上。

我看过CCSpriteBatchNode和NSMutableArray,但我不确定该使用哪一个。

我回顾了Steffen Itterheim的书中关于在初始化时创建项目符号并在需要时使用它们的示例。我认为这将是低效和繁重的iPhone。此外,难道所有的项目都在不断更新,即使看不见,也会消耗更多iPhone有限的内存和CPU?

另一方面,如果我有一个NSMutableArray,并根据需要添加项目,并有选择地更新当前存在的几个项目,这是否会更有效率。

因此,我的主要问题是在NSMutableArray和CCSpriteBatchNode之间进行选择,并找出在创建大量不断更新的对象时哪个最有效。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-02-04 16:50:49

如果您使用的是Cocos,如果您计划将多个对象同时显示在屏幕上,则CCSpriteBatchNode会更好。CCSpriteBatchNode只“绘制”一次对象,然后在视图中重复显示它。这节省了大量宝贵的CPU资源。这就是为什么CCSpriteBatchNode和项目符号一起使用,因为通常屏幕上有很多项目符号。

此外,如果您的对象经常出现,即使屏幕上一次只有一两个对象,CCSpriteBatchNode也会使用缓存的图形而不是重绘,仍然可以节省CPU资源。

我建议在可能的情况下继续使用Cocos对象,因为它们的设计是为了提高性能,而不是像NSMutableArray这样的原生苹果对象。

但是,如果您坚持使用NSMutableArray,那么如果您使用的是Cocos,那么仍然可以考虑使用CCArray。但是CCSpriteBatchNode可能会是你最好的选择。

票数 0
EN

Stack Overflow用户

发布于 2012-02-05 06:27:09

完全在屏幕之外的节点很快就会被清除,如果您将节点的visible属性设置为NO,它将立即被清除,这意味着不可见节点基本上不会有性能损失。

缓存许多对象实际上比在运行时创建和释放它们更快,即使这意味着内存中总是有400个左右的对象。这最多需要200KB的内存,并避免频繁的分配/取消分配周期,这是您希望尽可能避免的,特别是在第一代/第二代设备上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9135471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档