Cocos2d内容大小的精灵不工作



我使用cocos2d。加载ccspriteframecache和ccspritebatchnode后,我制作了一个ccspritebatchnode。但是我需要精灵stage的内容大小。

然而,它返回480.000000,而不是320.000000,这是整个屏幕的大小。我的图像要小很多。

[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"nBack.plist"];
    CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"nBack.png"]
CCSprite *stage = [CCSprite spriteWithSpriteFrameName:@"nBack0001.png"];
stage.position = ccp( winSize.width /2, winSize.height/2 );
CGSize stageSize = stage.contentSize;
NSLog( @"%f,%f", stageSize.width, stageSize.height );
[self addChild:stage z:1];

内容大小正确。您可能需要再次检查图像的尺寸。

我可以想象你在480 × 320的透明背景上画的图像。这将使图像大小保持在480x320,但用于创建纹理图集的工具将(暂时)剥离无关的透明区域。但它仍然会在iPhone上渲染图像时使用,并影响图像的contentSize。

我认为你可以通过使用boundingBox来获取contentSize

在你的例子中:

CGSize stageSize = [stage boundingBox];

尝试一下,希望你能得到理想的结果,但如果你缩放精灵,你会得到相应的内容大小。

:

stage.scale = 0.5f; or stage.scale = 2.0f;`

你会发现,在第一种情况下,大小减少了一半,在第二种情况下,大小增加了一倍。boundingBox给出当前正在运行的节点的内容大小。

我想这将有助于您获得尺寸。

谢谢

最新更新