Анимация в Cocos2d.

Я пытаюсь сделать 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];

Заранее спасибо, Джон


person tallen11    schedule 06.06.2010    source источник


Ответы (2)


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

person cc.    schedule 13.07.2010

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

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

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

может быть, вы ищете [character runAction:repeating];

характер = [CCSprite spriteWithSpriteFrame:anim];

Здесь анимация — это не спрайт-фрейм, а CC-анимация.

в основном, у вас есть несколько проблем.

вы можете попробовать что-то подобное, используя 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];
person Remover    schedule 09.08.2010