2011-12-25 3 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

СодержаниеВстроенная версия. Вы можете дважды проверить размеры вашего изображения.

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

+0

Есть ли способ получить «истинный» размер контента? Должен ли я обрезать все мои изображения вручную? – user1050548

+1

Это зависит от того, как вы создаете свое изображение. Если вы начинаете с чистого, прозрачного изображения размером 480x320, а затем нарисуете на нем точку 10x10, контентное изображение этого изображения будет по-прежнему 480x320. В большинстве программ рисования есть возможность обрезать неиспользуемые (прозрачные) границы изображения, использовать эту функцию. – LearnCocos2D

0

Я думаю, вы можете получить contentSize с помощью ограничивающего бокса.

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

CGSize stageSize = [stage boundingBox]; 

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

В:

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

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

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

СООБЩЕНИЕ

+0

boundingBox внутренне использует contentSize, так что он не будет отличаться от – LearnCocos2D

+0

. Нет никакой разницы, но иногда его работы очень хорошие, если мы используем boundingBox :) В одном из моих приложений я застрял в таком случае, и boundingBox получил меня вне. – Haroon

Смежные вопросы