Как изменить изображение в спрайте cocos2d из массива? - PullRequest
0 голосов
/ 15 сентября 2009

Я пытаюсь изменить изображение, которое отображает спрайт из массива. Вот код, который я использую:

((Sprite *)[enemiesArray objectAtIndex:index]).image = baseImage;

Я получаю сообщение об ошибке:

error: request for member 'image' in something not a structure or union

Что я делаю не так?

Спасибо за чтение.

Ответы [ 4 ]

1 голос
/ 14 июля 2011

Вам лучше сделать это так:

Где-то в init:

CCSpriteBatchNode *spritesheet = [CCSpriteBatchNode batchNodeWithFile:@"car_anim.png"];
[self addChild:spritesheet];

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"car_anim.plist"];

Где-то в действии:

[yourSprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"car_left.png"]];

*. Plist и * .png можно сделать с помощью Zwoptex.

Другие решения могут нарушить вашу анимацию, когда вы пытаетесь изменить текстуру при этом.

1 голос
/ 26 октября 2009

Я делаю это так:

Texture2D *texture = [[Texture2D alloc] initWithImage:myUIImage]
[sprite setTexture: texture];
0 голосов
/ 13 октября 2009

Попробуйте использовать

[((Sprite *) [врагиArray objectAtIndex: индекс]) setImage: baseImage];

0 голосов
/ 18 сентября 2009

Я не думаю, что это способ сделать это. Вместо этого вы должны вызвать один из методов init:

- (id) initWithCGImage: (CGImageRef) image;

- (id) initWithTexture: (Texture2D *) tex;

- (id) initWithFile: (NSString *) imageFile;

В моей игре я делаю это по-другому, у меня есть класс для моего объекта под названием 'Zed', который я также храню в массиве. У него есть спрайт в качестве поля, и если я хочу изменить изображение, я заменяю весь спрайт и убеждаюсь, что скрываю старый и показываю новый.

...