Dan
Dan

Reputation: 1

Animating a CCSprite on cocos2d?

Hey guys, I'm new to cocos2d and iPhone development, im currently trying to create a game like "PapiJump", What I'm currently having problems with, is animating the character CCSprite in my game, I have created 3 images of my character, character pointing right, left and middle (http://i53.tinypic.com/ngzoyh.png)

so when the character changes its direction (left or right), it wont "jump" directly to the other direction but will animate..

In my code im using the TouchesEnded method, in this method im setting a variable named "touchState", so if the user touched the right side of the screen it will set "touchState" to 1, otherwise it sets it to 2 (means left).

then in the "init" method i created a "schedule" that runs another method every 0.5 sec that is named: "updateGame", the "updateGame" method updates the player's position, it works like that: player.position = ccp(player.position.x , player.position.y - playerGravity.y);

I've read Ray's tutorial on animating CCSprites but i have no idea how to achieve the result that i need.. Thanks in advance and sorry for my bad english!

Upvotes: 0

Views: 2605

Answers (3)

Ryan Copley
Ryan Copley

Reputation: 873

NSMutableArray *walkAnimFrames = [NSMutableArray array];
for(int i = 1; i <= 4; ++i)
{
    [walkAnimFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache]     spriteFrameByName: [NSString stringWithFormat:@"spr_fillin_0%d.png", i]]];
}
CCAnimation *walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.0333f];

_sprite = [CCSprite spriteWithSpriteFrameName:@"spr_fillin_01.png"];
[_sprite runAction:[CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]];

[<CCLAYER OR BATCH NODE> addChild:_sprite];

Edit: Looks like you're talking about just flipping the image around. You can just refetch a sprite with

_sprite = [CCSprite spriteWithSpriteFrameName:@"<New Sprite File>"];

(Or cache them and switch)

Upvotes: 3

Ali1S232
Ali1S232

Reputation: 3411

if i got your question properly i can suggest two ways to solve your problem:
first you could rotate your object to till it is upside down, and the continue your previous animations using FlipX(or FlipY) flag marks as true or you can add an animation wich animates only characters rotation and when ever it's finnished change the FLipX(or FlipY) status.

Upvotes: 0

ySgPjx
ySgPjx

Reputation: 10265

Can you clarify your question? If you want to set a different sprite frame, you can use setDisplayFrame:

CCSpriteFrame *spriteFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:frameName];
[sprite setDisplayFrame:frame];

or if you have an animation:

[sprite runAction:[CCAnimate actionWithAnimation:runAnimation restoreOriginalFrame:NO]];

But I feel like the question is a little vague.

Upvotes: 0

Related Questions