• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

chchpd

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

cocos2dx --- Action介绍 (一)

部分转载自:http://blog.csdn.net/qiurisuixiang/article/details/8773797

1.  cocos2dx中,CCAction的类的结构图

2.动作的基类是CCAction,通过继承它可以实现很多不同的动作,主要分为三大类:CCFiniteTimeAction(有限次动作执行类)、CCSpeed(节点执行速度类)、CCFollow(节点跟随另一个节点移动)。在实际中,主要用到的是CCFiniteTimeAction类。

3.CCFiniteTimeAction分为CCActionInstant(瞬时动作)和CCActionInterval(延迟动作)。其中CCActionInstant动作没有执行过程,动作瞬时完成,而CCActionInterval动作执行需要一定的时间(或者一个过程)。在实际中,为了制作出炫丽的动画效果,使用得多的是CCActionInterval延时动作。

4.在上面的类结构图中,CCActionInterval的子类很多,简单介绍其中常用的,也可以通过cocos2d-x中自带的TestCpp例子来学习。(1) CCMoveTo / CCMoveBy 移动两者的主要差别在于CCMoveTo是移动到指定坐标,CCMoveBy是相对坐标。例如CCMoveTo(2.0f, ccp(50, 50))是在2s时间内移动到点x = 50、y = 50处,而CCMoveBy(2.0f, ccp(50, 50))表示2s时间内向x方向移动50个单位,向y方向移动50个单位;(2) CCScaleTo / CCScaleBy 缩放;(3) CCRotateTo / CCRotateBy 旋转;(4) CCSkewTo / CCSkewBy 扭曲;(5) CCJumpTo / CCJumpBy 跳跃;(6) CCBezierTo / CCBezierBy 贝塞尔曲线;(7) CCBink 闪烁;(8) CCFadeIn / CCFadeOut 淡入淡出;(9) CCTintTo / CCTintBy 染色,等

 5.下面就个人体会,重点分析以下几个动作:CCSequence,CCSpawn,CCRepeat,CCRepeatForever,CCActionCamera

  CCSequence:是用来按顺序执行一系列的动作。需要注意是,在执行的动作系列中不能出现CCRepeat这种无限的动作。

1 CCMoveTo* move_1 = CCMoveTo::create(2,ccp(10,20));
2 CCMoveBy* move_2 = CCMoveBy::create(2,ccp(10,20));
3 CCMoveTo* move_3 = CCMoveBy::create(2,ccp(10,20));
4 CCSequence* seq = CCSequence::create(move_1,move_2,move_3,NULL);
5 sprite->runAction(seq);

  CCSpawn:同时执行一系列动作,执行的时间以子动作中最长事件为准。

1 CCSpawn* action = CCSpawn::create(  
2         CCJumpBy::create(2 ,ccp(300,0) ,50 ,4),  
3         CCRotateBy::create(2,720), NULL);  
4    sprite->runAction(action);  

  CCRepeat:有限次重复一个动作。

1 CCMoveBy* action = CCMoveBy::create(2,ccp(10,10));
2 CCRepeat* repeat = CCRepeat::create(action,3);
3 sprite->runAction(repeat);

  CCRepeatForerver:无限次重复一个动作。

1 CCRotateBy* rotate = CCRotateBy::create(1.0,360);  
2 CCRepeatForever* action2 = CCRepeatForever::create(rotate);  
3 sprit->runAction(action2);

 

posted on 2013-05-07 18:17  chchpd  阅读(2031)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3