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

    瞬时动作:瞬时动作的基类是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倍

  • 相关阅读:
    centos shell运行报语法错误: 未预期的文件结尾
    腾讯云防暴力破解防异地登陆
    centos常用命令
    centos7安装nginx
    JavaScript数组倒序函数reverse()
    Ecshop首页购物车数量调取问题
    (原)IPhone开发时把ToolBar中的元素居中的技巧
    iphone开发常用代码笔记
    Windows环境下使用Apache+mod
    [转]C++中sizeof(struct)怎么计算?
  • 原文地址:https://www.cnblogs.com/lchzls/p/5027236.html
Copyright © 2011-2022 走看看