zoukankan      html  css  js  c++  java
  • cocos2d对动画的各种操作

    关于动画的各种操作,总结一下以便以后复习查找。


    内容简要:

    1、瞬时动作2、延时动作        3、 组合动作 4、动画

    5、速度变化6、函数调用7、创建动作动画8、控制动画帧的速度


    原文地址: http://blog.csdn.net/dingkun520wy/article/details/7014233

    -----------------------------------------------------------------------------------------------------------------------------------------------------



    瞬时动作:瞬时动作的基类是InstantAction

    1、放置位置
      CGPoint p = ccp(width,height); 
      [sprite runAction:[CCPlace actionWithPosition:p]]; 
    2、隐藏
      [sprite runAction:[CCHide action]];
    3、显示
      [sprite runAction:[CCShow action]];
    (效果类似亍 [node  setVisible:YES]. 之所以作为一个劢作来实现是为了可以不其
    他劢作形成一个连续劢作)
    4、可见切换
      [sprite runAction:[CCToggleVisibility action]]; 


    延时动作:延时动作的基类是CCIntervalAction

      函数命名规则:
    XxxxTo: 意味着运劢到指定癿位置。 
    XxxxBy:意味着运劢到按照指定癿x、y增量癿位置。(x、y可以是负值) 
    1、移动到 – CCMoveTo 
    2、移动– CCMoveBy 
    3、跳跃到 – CCJumpTo 设置终点位置和跳跃癿高度和次数。
    4、跳跃 – CCJumpBy  设置终点位置和跳跃癿高度和次数。
    5、贝塞尔 – CCBezierBy 支持3次贝塞尔曲线:P0-起点,P1-起点切线方向,P2-终  点切线方向,P3-终点。 首先设置定Bezier参数,然后执行。
    6、放大到 – CCScaleTo 设置放大倍数,是浮点型。 
    7、放大 – CCScaleBy 
    8、旋转到 – CCRotateTo 
    9、旋转 – CCRotateBy 
    10、闪烁 – CCBlink 设定闪烁次数
    11、色调变化到 – CCTintTo 
    12、色调变换 – CCTintBy 
    13、变暗到 – CCFadeTo 
    14、由无变亮 – CCFadeIn 
    15、由亮变无 – CCFadeOut

    组合动作
    1、序列-CCSequence
    // 创建5个劢作 
      id ac0 = [sprite runAction:[CCPlace actionWithPosition:p]]; 
      id ac1 = [CCMoveTo actionWithDuration:2 position:ccp(50,50)]; 
      id ac2 = [CCJumpTo actionWithDuration:2 position:ccp(150,50) height:30 jumps:5]; 
      id ac3 = [CCBlink actionWithDuration:2 blinks:3]; 
      id ac4 = [CCTintBy actionWithDuration:0.5 red:0 green:255 blue:255]; 
      //将5个劢作组合为一个序列,注意丌要忘了用nil结尾。 
      [sprite runAction:[CCSequence actions:ac0, ac1, ac2, ac3, ac4, ac0, nil]]; 

    2、同步-Spawn
      // 同步 劢作和组合劢作 以形成一个连续癿新劢作
      [sprite runAction:[CCSpawn actions:ac1, ac2, seq, nil]]; 

    3、重复有限次数 -Repeate

      // 创建劢作序列 
      id ac1 = [CCMoveTo actionWithDuration:2 position:ccp( 50,50)]; 
      id ac2 = [CCJumpBy actionWithDuration:2 position:ccp(-400, -200) height:30 jumps:5]; 
      id ac3 = [CCJumpBy actionWithDuration:2 position:ccp(2, 0) height:20 jumps:3]; 
      id seq = [CCSequence actions:ac1, ac2, ac3, nil];  
      //  重复运行上述劢作序列3次。 
      [sprite runAction:[CCRepeat actionWithAction:seq times:3]];

    4、反动作-Reverse
    反动作就是反向(逆向)执行某个动作,支持针对动作序列癿反劢作序列。反动作
    不是一个与门的类,而是CCFiniteAction引入的一个接口。不是所有的类都支持
    反动作,XxxxTo类通常不支持反动作,XxxxBy类通常支持。

    id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(190,220)];
    // 创建某个动作的反动作。   
    id ac2 = [ac1 reverse];   
    [sprite runAction:[CCRepeat actionWithAction:[CCSequence actions:ac1, ac2,nil] times:2]]; 



    动画-Animation

    CCAnimation *animation = [AtlasAnimation animationWithName:@"flight" delay:0.2f]; 
      // 每帧癿内容定义。 
      for(int i=0;i<3;i++) { 
        int x= i % 3; 
        [animation addFrameWithRect: CGRectMake(x*32, 0, 31, 30) ]; 
      }     
      // 执行劢画效果 
      id action = [CCAnimate actionWithAnimation: animation]; 
      [sprite runAction:[CCRepeat actionWithAction:action times:10]];

    无限重复 - RepeatForever


    // 将该动画作为精灵的本征动画,一直运行。 
      [sprite runAction:[RepeatForever actionWithAction:action]]; 

    速度变化


    1、EaseIn 由慢至快。 
    2、EaseOut 由快至慢 
    3、EaseInOut 由慢至快再由快至慢。 
    4、EaseSineIn 由慢至快。
    5、EaseSineOut 由快至慢 
    6、EaseSineInOut 由慢至快再由快至慢。 
    7、EaseExponentialIn 由慢至极快。 
    8、EaseExponentialOut 由极快至慢。 
    9、EaseExponentialInOut 由慢至极快再由极快至慢。 
    10、Speed 人工设定速度,还可通过SetSpeed不断调整。


    延时动作 - Delay

    id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200, 200)]; 
    id ac2 = [ac1 reverse]; 
    // 实现一个等待间歇 
    [sprite  runAction:[Sequence  actions:ac1,  [DelayTime actionWithDuration:1], ac2, nil]];

    函数调用

      id ac1 = [CCMoveBy actionWithDuration:2 position:ccp(200, 200)]; 
      id ac2 = [ac1 reverse]; 
      id acf = [CCCallFunc actionWithTarget:self selector:@selector(CallBack1)]; 
       [sprite runAction:[CCSequence actions:ac1, acf, ac2, nil]];

    1、带对象参数
    id acf = [CallFuncN actionWithTarget:self selector:@selector(CallBack2:)];

    - (void) CallBack2:(id)sender;
    2、带对象、数据参数
    id acf = [CCCallFuncND actionWithTarget:self selector:@selector(CallBack3:data:) data:(void*)2];

    -(void) CallBack3:(id)sender data:(void*)data;



    创建动作
    1、利用文件名
    CCAnimation*anim=[CCAnimationanimationWithFile:@"Jun"frameCount:12delay:0.1]; 
    CCAnimate* animate = [CCAnimate actionWithAnimation:anim];
    CCSequence *seq = [CCSequence actions:animate,nil]; 
    CCRepeatForever* repeat = [CCRepeatForever actionWithAction:seq];
    [sprite runAction:repeat];


    2、利用缓存
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Jun.plist"];      
    anim=[CCAnimation animationWithFrame:@"Jun" frameCount:12 delay:0.1]; 
    animate = [CCAnimate actionWithAnimation:anim];
    seq = [CCSequence actions:animate,nil]; 
    repeat = [CCRepeatForever actionWithAction:seq];
    [sprite runAction:repeat]; 

    控制动作的速度
    1、创建
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Jun.plist"];
    CCSprite*sprite=[CCSprite spriteWithSpriteFrameName:@"Jun1.png"];
    sprite.position=ccp(200,200);
    [self addChild:sprite]; 
    CCAnimation*anim=[CCAnimation animationWithFrame:@"Jun" frameCount:12 delay:0.1]; 
    CCAnimate* animate = [CCAnimate actionWithAnimation:anim];
    CCSequence *seq = [CCSequence actions:animate,nil]; 
    //动作放入speed中
    CCSpeed *speed =[CCSpeed actionWithAction:[CCRepeatForever actionWithAction:seq] speed:1.0f];
    [speed setTag:66];
    [Sprite runAction:speed];

    2、改变
    CCSpeed *speed=(CCSpeed*)[sprite getActionByTag:66];
    [speed setSpeed:0.5];//放慢原有速度的0.5倍
  • 相关阅读:
    钱多多软件制作04
    团队项目01应用场景
    HDU 4411 arrest
    HDU 4406 GPA
    HDU 3315 My Brute
    HDU 3667 Transportation
    HDU 2676 Matrix
    欧拉回路三水题 POJ 1041 POJ 2230 POJ 1386
    SPOJ 371 BOXES
    POJ 3422 Kaka's Matrix Travels
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212298.html
Copyright © 2011-2022 走看看