CCSprite会降低性能

时间:2012-03-04 18:13:56

标签: iphone objective-c cocos2d-iphone

我正在使用cocos2d为iPhone制作iPhone的应用程序,我在项目中添加了4张图片,我想将其叠加以用作背景。然后我将它们添加到应用程序中,使它们成为像这样的CCSprites ......

    background.sun = [CCSprite spriteWithFile:@"SunLayer.png"];
    [self addChild:background.sun z:-1];

    background.mountain = [CCSprite spriteWithFile:@"MountainLayer.png"];
    [self addChild:background.mountain z:-1];

    background.tree = [CCSprite spriteWithFile:@"TreeLayer.png"];
    [self addChild:background.tree z:-1];

    background.hill = [CCSprite spriteWithFile:@"HillLayer.png"];
    [self addChild:background.hill z:-1];


    background.hill.position = ccp(s.width/2, s.height/2);
    background.sun.position = ccp(s.width/2, s.height/2);
    background.mountain.position = ccp(s.width/2, s.height/2);
    background.tree.position = ccp(s.width/2, s.height/2);

这使我的帧率降至30!从60 !!如何保持良好的帧速率,但添加这些精灵!三江源

5 个答案:

答案 0 :(得分:2)

由于你们都是在同一个z上添加它们,为什么不在photoshop或同等版本中添加它们并添加单个纹理?你是否需要逐渐淡化或以其他方式处理这些纹理?

此外,我经常发现模拟器上的FPS与我将在设备上获得的内容没有任何相似之处。当您怀疑性能问题时,我会建议您快速对设备进行快速测试,以评估问题是否真实。

答案 1 :(得分:2)

由于图像尺寸较大,这种情况正在发生。

我有完全相同的问题。我有4张960x640的图像。虽然其中3个大部分是透明的,但我只是将它们的画布调整为960x640,以便将它们轻松放置在中心位置。

这给了我糟糕的25fps下降。 35fps而不是60。

我将3张图片裁剪为内容范围,并使其大约为960x50。 它的魅力再次像60fps一样。

答案 2 :(得分:1)

对于大图像,如果将它们添加到CCSpriteBatchNode而不是单独添加,则可以显着提高帧速率。这样,CPU只会对绘图引擎进行一次调用,而不是对每个图像进行单独调用。测试中显示CCSpriteBatchNode在应用于大图像(例如背景图像)时具有最大优势。

答案 3 :(得分:0)

我有一段时间没有使用过Cocos2d,但你是否在将精灵添加到图层之前尝试设置位置?您还确定在初始化时只添加一次吗?还有什么尺寸的图像?

答案 4 :(得分:0)

这是因为两个因素相结合:

a)PowerVR GPU的透明度非常昂贵

b)更大的图片