我有一组CCSprite对象,它们都被添加到CCLayer中的批处理节点。那些精灵应该更新他们在CCLayer的更新方法中的位置。 FPS是60,当场景开始时它是60但是它会急剧下降,直到达到2或1 FPS! 我的更新方法(每秒运行60次)看起来像这样
-(void)update:(ccTime)delta {
for (int i = 0; i<spritesArray.count; i++) {
((CCSprite *)[spritesArray objectAtIndex:i]).position = ccp(..., ...);
}
}
答案 0 :(得分:0)
只是为了让您的生活更轻松,迭代更快,代码更容易同时阅读,这里是如何使用快速枚举来完成同样的事情:
-(void)update:(ccTime)delta
{
for (CCSprite* sprite in spritesArray)
{
sprite.position = ccp(..., ...);
}
}
这更快,因为它为每次迭代删除了两个消息发送(count和objectAtIndex),以及由于首先使用快速枚举而进行的内部优化。