2011-12-25 33 views
1

我正在使用cocos2d。加載ccspriteframecache和ccspritebatchnode後,我做了一個ccsprite。但我需要精靈stage的內容。Cocos2d contentSize對於精靈不起作用

但是,它返回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]; 

回答

1

contentSize是正確的。您可能需要仔細檢查圖像的尺寸。

我可以想象你在480x320透明背景上繪製圖像。這將使圖像大小爲480x320,但用於創建紋理圖集的工具將(暫時)剝離無關透明區域。但它仍將用於在iPhone上呈現圖像並影響圖像的contentSize。

+0

有沒有辦法獲得「真實」的內容大小?我必須手動裁剪所有圖像嗎? – user1050548 2011-12-27 13:21:11

+1

這取決於你如何創建你的圖像。如果您從尺寸爲480x320的空白透明圖像開始,然後在其上繪製10x10點,則該圖像的contentSize仍將爲480x320。大多數繪圖程序都可以選擇裁剪圖像的未使用(透明)邊框,並使用該功能。 – LearnCocos2D 2012-01-08 09:33:30

0

我想你可以通過使用boundingBox來獲取contentSize。

你的情況:

CGSize stageSize = [stage boundingBox]; 

試試這個希望,你會得到想要的結果,但如果你縮放精靈,你會根據所獲取內容的大小。

由於:

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

你會發現,在第一種情況下的尺寸則縮小到一半,在第二種情況下,大小加倍。 boundingBox給出正在播放的節點的當前內容大小。

我認爲這會幫助您獲得大小。

謝謝

+0

boundingBox在內部使用contentSize,所以不會有任何不同 – LearnCocos2D 2011-12-26 11:08:16

+0

沒有區別,但有時它的作品非常好,如果我們使用boundingBox :)在我的一個應用程序中,我遇到了這種情況,boundingBox讓我出。 – Haroon 2011-12-26 11:38:34