Как изменить изображение спрайта во время последовательности действий

В моем коде (образце) ниже я хотел бы изменить изображение спрайта во время последовательности действий.

spriteActions =  [CCRepeatForever actionWithAction:
                    [CCSequence actions:
                     [CCShow action],
                     [CCDelayTime actionWithDuration:1.5],
                     [CCHide action],
                     [CCDelayTime actionWithDuration:5.0],
                     [CCShow action],
                     [CCDelayTime actionWithDuration:3.0],
                     // I would like to change the sprite image here before completing the remaining actions. 
//I want this line here: sprite = [CCSprite SpriteWithFile:@"newSpriteImage.png"];
                     [CCMoveTo actionWithDuration:2.0 position:newSpritePos],
                     [CCHide action],
                     [CCDelayTime actionWithDuration:2.0],
                    nil]];

[sprite runAction:spriteActions];

Спасибо за помощь.

1 ответ

Решение

Вы делаете это так:

[CCRepeatForever actionWithAction:
                    [CCSequence actions:
                     [CCShow action],
                     [CCDelayTime actionWithDuration:1.5],
                     [CCHide action],
                     [CCDelayTime actionWithDuration:5.0],
                     [CCShow action],
                     [CCDelayTime actionWithDuration:3.0],
                     // I would like to change the sprite image here before completing the remaining actions. 
[CCCallBlockN actionWithBlock:^(CCNode*node){
CCSprite *spritN = (CCSprite*)node;

 //[spritN setDisplayFrame:[cache spriteFrameByName:@"newSpriteImage.png"]]

            CCTexture2D* tex = [[CCTextureCache sharedTextureCache] addImage:@"newSpriteImage.png"];
            CGSize texSize = tex.contentSize;
            CGRect texRect = CGRectMake(0, 0, texSize.width, texSize.height);
            CCSpriteFrame* frame = [CCSpriteFrame frameWithTexture:tex rect:texRect];
             [spritN setDisplayFrame:frame];
                                                        }],
                     [CCMoveTo actionWithDuration:2.0 position:newSpritePos],
                     [CCHide action],
                     [CCDelayTime actionWithDuration:2.0],
                    nil]];
Другие вопросы по тегам