Анимация в Cocos2d. - PullRequest
       29

Анимация в Cocos2d.

2 голосов
/ 06 июня 2010

Я пытаюсь сделать sprite animate в cocos2D. Я считаю, что у меня настроена анимация, но как мне нарисовать animating sprite на экране? Вот что у меня есть:

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

Заранее спасибо, John

Ответы [ 2 ]

1 голос
/ 13 июля 2010

Возможно, это была просто ошибка вырезания и вставки, но похоже, что вы говорите спрайту повторять анимацию ДО того, как вы ее создадите, поэтому спрайт символа, который вы добавляете в узел, никогда не получает отправленное действие CCAnimate к этому.

0 голосов
/ 10 августа 2010

Вы не добавляете spriteFrames, как требуется для метода addFrame.

с этой строкой:

[символ делает: повторение];

может быть, вы ищете [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];
...