2010-06-06 79 views
2

我想在cocos2D中制作sprite animate。我相信我已经设置了动画,但是如何在屏幕上绘制animating sprite?以下是我有:提前Cocos2d中的动画。

id anim = [[[CCAnimation alloc] initWithName:@"char_walking" delay:1/12.0] autorelease]; 

[anim addFrame:@"run2.png"]; 
[anim addFrame:@"run1.png"]; 
[anim addFrame:@"run3.png"]; 
[anim addFrame:@"run4.png"]; 
[anim addFrame:@"run3.png"]; 
[anim addFrame:@"run1.png"]; 

id myAction = [CCAnimate actionWithAnimation:anim]; 
id repeating = [CCRepeatForever actionWithAction:myAction]; 

[character do:repeating]; 

character = [CCSprite spriteWithSpriteFrame:anim]; 
character.position = ccp(160, 240); 
[self addChild:character]; 

感谢, 约翰

回答

1

也许这只是一个剪切和粘贴错误,但它看起来像你说的是精灵之前重复动画你创建它,所以你添加到节点的字符精灵永远不会获得发送给它的CCAnimate动作。

+0

这就是我所做的,我觉得很愚蠢。 – tallen11 2011-02-13 23:37:55

0

由于addFrame方法需要,您并未添加spriteFrame。

与此行:

[字符做:重复];

也许你正在寻找[character runAction:repeating];

字符= [CCSprite spriteWithSpriteFrame:动画]。

在这里,anim不是spriteFrame,它是一个CCanimation。

基本上,你有几个问题。

你可以尝试这样的事情用zwoptex创建您的.plist文件:

CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache]; 

[cache addSpriteFramesWithFile:@"runImages.plist"]; 

CCSprite *startingImage = [CCSprite spriteWithSpriteFrameName:@"run1.png"]; 

[self addChild:startingImage]; 

//创建你的精灵帧

NSArray *animFrames = [[NSArray alloc] initWithCapacity:6]; 

[animFrames addFrame:[cache spriteFrameByName:@"run2.png"]]; 
[animFrames addFrame:[cache spriteFrameByName:@"run1.png"]]; 
[animFrames addFrame:[cache spriteFrameByName:@"run3.png"]]; 
[animFrames addFrame:[cache spriteFrameByName:@"run4.png"]]; 
[animFrames addFrame:[cache spriteFrameByName:@"run3.png"]]; 
[animFrames addFrame:[cache spriteFrameByName:@"run1.png"]]; 

//运行动画

CCAnimation *animation = [CCAnimation animationWithName:@"char_walking" delay:1/12.0 frames:animFrames]; 
id anim = [CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO];  
[startingImage runAction:anim];