Question

In my code (sample) below I would like to change the sprite's image during the sequence of actions.

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];

Thanks for the assistance.

Was it helpful?

Solution

You do like this:

[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]];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top