Как изменить изображение в спрайте cocos2d из массива?

StackOverflow https://stackoverflow.com/questions/1426308

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

- (id) initWithCGImage: (CGImageRef) image;

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

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

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

Другие советы

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

Texture2D *texture = [[Texture2D alloc] initWithImage:myUIImage]
[sprite setTexture: texture];

Вам лучше сделать это следующим образом:

Где-то в 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.

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

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

[((Sprite *) [врагиArray objectAtIndex: index]) setImage: baseImage];

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top