Проблема с CCSpriteFrameCache и текстурами спрайтов - PullRequest
0 голосов
/ 30 августа 2011

Я недавно переключился с использования отдельных файлов ресурсов на использование текстурного атласа. Я экспериментировал с заменой нескольких [CCSprite spriteWithFile] на [CCSprite spriteWithSpriteFrameName]. Это прекрасно работает, кроме одной вещи. Размеры текстуры CCSprite неверны. Вот мой код:

CGSize screenSize = [[CCDirector sharedDirector]winSize];
CCSprite * leftArrow = [CCSprite spriteWithSpriteFrameName:@"smallLeftArrow.png"];
CGSize arrowSize = [leftArrow texture].contentSizeInPixels;
CCSprite * selectedLA = [CCSprite spriteWithSpriteFrameName:@"smallLeftArrow.png"];
selectedLA.opacity = 100;
CCMenuItem * leftArrowItem = [CCMenuItemSprite itemFromNormalSprite:leftArrow selectedSprite:selectedLA target:[HelloWorldLayer sharedHelloWorldLayer] selector:@selector(doLeft)];
leftArrowItem.position = ccp(- arrowSize.width, arrowSize.height);
CCLOG(@"arrow.width = %f arrow.height %f",arrowSize.width, arrowSize.height);

Это вывод отладчика:

2011-08-29 18:27:04.239 Zero Gravity Combat[454:307] arrow.width = 1024.000000 arrow.height 1024.000000   

Размер всего текстурного атласа 1024 X 1024. Я использую упаковщик текстур для создания текстурного атласа. Есть ли способ исправить это или мне нужно создать текстуру вручную, чтобы определить размеры?

1 Ответ

0 голосов
/ 30 августа 2011

Вы, очевидно, хотите получить размер стрелки спрайта.Это просто: leftArrow.contentSize.

Что вы сделали, так это получили размер используемой текстуры размером 1024x1024.Размер текстуры не всегда совпадает с размером спрайта.

...