Как изменить изображение в спрайте cocos2d из массива?
-
07-07-2019 - |
Вопрос
Я пытаюсь изменить изображение, которое отображает спрайт из массива. Вот код, который я использую:
((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];