用于精灵的Cocos2d contentSize不起作用

时间:2011-12-25 07:32:36

标签: iphone xcode cocos2d-iphone

我正在使用cocos2d。在我加载ccspriteframecache和ccspritebatchnode之后,我制作了一个ccsprite。但我需要精灵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];

2 个答案:

答案 0 :(得分:1)

contentSize是正确的。您可能需要仔细检查图像的尺寸。

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

答案 1 :(得分:0)

我认为您可以使用boundingBox获取contentSize。

在你的情况下:

CGSize stageSize = [stage boundingBox];

尝试这个希望你会获得所需的结果,但如果你缩放精灵,你将获得内容大小。

作为:

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

你会发现在第一种情况下,尺寸减小到一半,在第二种情况下,尺寸是双倍。 boundingBox给出了正在播放的节点的当前内容大小。

我认为这有助于你获得规模。

谢谢