下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Cocos2D-X基础教程:关于缓动动作的使用方法

作者:课课家教育     来源: http://www.kokojia.com点击数:1443发布时间: 2019-04-22 15:44:19

标签: Cocos2D-X缓动Cocos2D-X教程Cocos2D-X技巧

  我们在玩手机游戏的时候经常能看到缓动动作的应用,比如天天酷跑之类的游戏,本篇教程将详细解析Cocos2d-x中EaseActions的运用。

  我们用Silverlight框架开发WP8的应用程序的时,编写动画可以使用缓动效果来实现缓动动画对吧,那么在Cocos2d-x框架里面我们一样是可以缓动动作(缓动动画),其实技术的东西都是想通的,如果你很好地理解了缓动动画,那么对于Cocos2d-x框架的缓动动作其实就是一碟小菜了。那么对于缓动动作我们可以理解为给普通的动作加上了一个加速度,让其运动的效果更加符合我们的自然规律。那么在Cocos2d-x框架里面内置了一系列常用的缓动动作。 

  示例代码:

  //在init方法里面初始化当前的实例

  bool HelloWorld::init()

  {

  bool bRet = false;

  do

  {

  //CCLayer进行初始化,初始化失败跳出循环

  if ( !CCLayer::init() )

  {

  break;

  }

  //获取手机屏幕的大小

  CCSize size = CCDirector::sharedDirector()->getWinSize();

  //创建精灵1

  CCSprite *cat1 = CCSprite::create("cat.png");

  cat1->setPosition(ccp(0, 0));

  cat1->setPosition(ccp(100, 200));

  this->addChild(cat1);

  //创建精灵2

  CCSprite *cat2 = CCSprite::create("cat.png");

  cat2->setPosition(ccp(0, 0));

  cat2->setPosition(ccp(100, 300));

  this->addChild(cat2);

  //创建精灵3

  CCSprite *cat3 = CCSprite::create("cat.png");

  cat3->setPosition(ccp(0, 0));

  cat3->setPosition(ccp(100,400));

  this->addChild(cat3);

  //匀速的移动动作

  CCActionInterval* move = CCMoveBy::create(3, CCPointMake(800,0));

  CCActionInterval* move_back = move->reverse();

  CCFiniteTimeAction* seq1 = CCSequence::create( move, move_back, NULL);

  cat1->runAction( CCRepeatForever::create((CCActionInterval*)seq1));

  //添加EaseBackIn缓动效果的移动动画

  CCActionInterval* move_ease_in = CCEaseBackIn::create((CCActionInterval*)(move->copy()->autorelease()) );

  CCActionInterval* move_ease_in_back = move_ease_in->reverse();

  CCFiniteTimeAction* seq2 = CCSequence::create( move_ease_in, move_ease_in_back, NULL);

  cat2->runAction( CCRepeatForever::create((CCActionInterval*)seq2));

  //添加EaseBackOut缓动效果的移动动画

  CCActionInterval* move_ease_out = CCEaseBackOut::create((CCActionInterval*)(move->copy()->autorelease()) );

  CCActionInterval* move_ease_out_back = move_ease_out->reverse();

  CCFiniteTimeAction* seq3 = CCSequence::create( move_ease_out, move_ease_out_back, NULL);

  cat3->runAction( CCRepeatForever::create((CCActionInterval*)seq3));

  //接收界面的的触摸事件

  setTouchEnabled(true);

  bRet = true;

  } while (0);

  //返回成功

  return bRet;

  }

  效果如下:

Cocos2D-X基础教程:关于缓动动作的使用方法_Cocos2D-X缓动_Cocos2D-X教程_Cocos2D-X技巧_课课家  

  (本文摘自CSDN博客,并不代表本站立场观点。)

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程