Cocos2d contentSize для спрайта не работает - PullRequest
1 голос
/ 25 декабря 2011

Я использую 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 ]

1 голос
/ 26 декабря 2011

Размер содержимого правильный. Возможно, вы захотите перепроверить размеры вашего изображения.

Я могу представить, что вы нарисовали изображение на прозрачном фоне 480x320. Это оставило бы размер изображения в 480x320, но инструменты, используемые для создания текстурного атласа, будут (временно) лишать постороннюю прозрачную область. Но он все равно будет использоваться при рендеринге изображения на iPhone и повлияет на размер изображения.

0 голосов
/ 26 декабря 2011

Я думаю, вы можете получить contentSize, используя boundingBox.

в вашем случае:

CGSize stageSize = [stage boundingBox];

Попробуйте, надеюсь, вы получите желаемый результат, но если вы масштабируете спрайт, вы получитеПолучите размер контента в соответствии с этим.

Как:

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

, вы обнаружите, что в первом случае размер уменьшается вдвое, а во втором - в два раза.boundingBox дает текущий размер содержимого узла в игре.

Я думаю, что это поможет вам в получении размера.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...