2012-05-15 3 views
0

Я новичок в cocos2d и готовлю свою демо-игру. Я перемещаю спрайт справа налево, используя только одно изображение, как изображение птицы, движущееся слева направо. Но я хочу оживить этот спрайт через различные образы, чтобы он выглядел как летающая птица. Я не знаю, как это сделать.Animate CCSprite

Вот мой код:

CCSprite *target = [CCSprite spriteWithFile:@"Target.png" rect:CGRectMake(0, 0, 27, 40)] 
id actionMove = [CCMoveTo actionWithDuration:actualDuration position:ccp(-target.contentSize.width/2, actualY)]; 
    id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)]; 
    [target runAction:[CCSequence actions:actionMove, actionMoveDone, nil]]; 

Цените ваш ответ

Заранее спасибо !!!

ответ

3

Для анимации конкретного спрайта Вам потребуется лист спрайта, который будет находиться в вашем Ресурсе. Вы можете создать лист спрайта либо из Texture Packer ИЛИ Zwoptex Инструменты, которые я обычно использую.

Далее вы можете реализовать код ниже

CCSpriteBatchNode *sheet = [CCSpriteBatchNode batchNodeWithFile:@"drawing1-i3.png"]; // Png File Name 
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"drawing1-i3.plist"]; // Plist File Name 
    [self addChild:sheet]; 

     //Generating the Animation 
    NSMutableArray *arr_anim =[NSMutableArray array]; 
    for(int i=1; i<30; i++) // i< number of frames in the plist File Name 
    { 
     NSString *str_fileNm = [NSString stringWithFormat:@"drawing1%d.png",i]; 
     CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache]spriteFrameByName:str_fileNm]; 
     [arr_anim addObject:frame]; 
    } 

    CCSprite *startAnim = [CCSprite spriteWithSpriteFrameName:@"drawing11.png"]; 
    [startAnim setPosition:ccp(150,150)]; 
    [self addChild:startAnim]; 

    //Starting the Animation 
    CCAnimation *animation = [CCAnimation animationWithFrames:arr_anim delay:0.15f]; 
    // id action =[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation restoreOriginalFrame:YES]]; 
    id action =[CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]; 
    [startAnim runAction:action]; 

Я думаю, что это поможет вам для создания анимации.

+0

лист спрайтов не является обязательным условием для анимации – johnbakers

+0

Сценарий 'startAnim' должен быть добавлен как дочерний узел пакетного узла таким образом, что он использует только один вызов OpenGL или« пакетный розыгрыш ». – nrj

1

Используйте CCAnimation class.

В частности, используют методы, как animationWithFrames: и поставляют ваши изображения в виде массива.

Смежные вопросы