iOS Cocos2d - 移动多个精灵时FPS会下降

时间:2013-09-16 11:08:48

标签: iphone ios animation cocos2d-iphone frame-rate

我有一组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(..., ...);

    }
}

1 个答案:

答案 0 :(得分:0)

只是为了让您的生活更轻松,迭代更快,代码更容易同时阅读,这里是如何使用快速枚举来完成同样的事情:

-(void)update:(ccTime)delta 
{
    for (CCSprite* sprite in spritesArray)
    {
        sprite.position = ccp(..., ...);
    }
}

这更快,因为它为每次迭代删除了两个消息发送(count和objectAtIndex),以及由于首先使用快速枚举而进行的内部优化。