Изменение текстуры спрайта из CCSpriteBatchNode - PullRequest
1 голос
/ 03 мая 2011

Я пытаюсь изменить текстуру спрайта, который я создаю из SpriteBatchNode.

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444];

spritesBgNode = [CCSpriteBatchNode batchNodeWithFile:@"playingCards.pvr.ccz"];
[self addChild:spritesBgNode];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"playingCards.plist"];

Я искал и нашел примеры, которые используют

Texture2D *texture = [[Texture2D alloc] initWithImage:myUIImage]

[sprite setTexture: texture];

Итак, мои вопросы: как мне получить изображение из моего файла batchNode? Или я использую другой метод, чтобы получить ссылку на изображение в моем файле playingCards.pvr.ccz.

UPDATE

Прежде всего, спасибо за ответ. Итак, у меня есть mySprite с изображением короля, используя предоставленный вами фрагмент кода. Но я хочу изменить текстуру спрайта, чтобы она отображала заднюю часть карты (чтобы ее можно было играть лицевой стороной вверх или вниз). У меня есть оба изображения внутри CCSpriteBatchNode.

Но, как вы указали, «Вы не можете получить изображение из batchNode», я не могу использовать [[Texture2D alloc] initWithImage: myUIImage]

Итак, я могу изменить изображение спрайта с лицевой стороны вверх-вниз.

Спасибо

1 Ответ

1 голос
/ 03 мая 2011

Если вы хотите отобразить изображения в файле .pvr.ccz на экране, добавьте следующий код:

CCSprite * mySprite = [CCSprite spriteWithSpriteFrameName: @"name of sprite frame"];
[spritesBgNode addChild: mySprite];

По сути, для отображения частей вашего batchNode вам необходимо добавить к нему спрайт. Имя рамки спрайта находится в файле .plist, который вы добавили в FrameCache.

Вы не можете получить изображение из batchNode. UIImage - это тип изображения iPhone API, а не cocos2d. В cocos2d для удобства предусмотрено initWithImage:(UIImage*)image.

Если вы используете [[Texture2D alloc] initWithImage:myUIImage], UIImage используется для создания объекта NSData, и [texture initWithData: data] вызывается внутренне. Изображение не сохраняется для дальнейшего использования.

Обновление

В этом случае спрайт работает как «представление batchNode». Чтобы просмотреть другую часть узла пакета, измените фрейм вашего спрайта.

[mySprite setDisplayFrame:
    [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: @"back of card"]]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...