【Cocos2d-X开发学习笔记】第13期:动作类之基本动作的使用(上)
来源:互联网 发布:哪有好的java培训 编辑:程序博客网 时间:2024/05/16 12:50
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010
这一期我们要学习到的基本动作有移动动作、缩放动作、旋转动作以及扭曲动作。
一、基本动作
1、CCAction的子类CCFiniteTimeAction分为瞬时动作(CCActionInstant)和延时动作(CCActionInterval),其中瞬
时动作(CCActionInstant)的子类见下图所示。
瞬时动作,顾名思义,就是直接调用结果的动作,这中间不产生任何动画效果。
2、延时动作(CCActionInterval)则不同,它会形成动画过程,其子类见下图所示。
二、移动动作
1、首先看CCMoveTo和CCMoveBy的使用。
<1> CCMoveTo
CCMoveTo::create(float duration,const CCPoint& position)
作用:创建一个移动的动作。
参数1:移动到目标坐标所需的时间(秒)。
参数2:目标坐标。
<2> CCMoveBy
CCMoveBy::create(float duration,const CCPoint& position)
作用:创建一个移动的动作。
参数1:移动到目标坐标所需的时间(秒)。
参数2:目标坐标。
CCMoveBy支持reverse()函数,可以获取其反向动作。
2、示例代码如下所示。
首先新建Cocos2D-X项目,然后在HelloWorldScene.cpp文件的init函数中添加如下代码。
bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init());//获得尺寸大小CCSize s = CCDirector::sharedDirector()->getWinSize();//创建精灵 CCSprite* m_grossini = CCSprite::create("grossini.png");CCSprite* m_tamara = CCSprite::create("grossinis_sister1.png");CCSprite* m_kathia = CCSprite::create("grossinis_sister2.png");//设置精灵的位置m_grossini->setPosition( ccp(s.width/2, s.height/2));m_tamara->setPosition( ccp(s.width/4, s.height/2)); m_kathia->setPosition( ccp(3 * s.width/4, s.height/2)); //添加精灵到图层addChild(m_grossini, 1);addChild(m_tamara, 2);addChild(m_kathia, 3);//创建移动的动作CCActionInterval* actionTo = CCMoveTo::create(2, ccp(s.width-40, s.height-40));CCActionInterval* actionBy = CCMoveBy::create(2, ccp(80,80));CCActionInterval* actionByBack = actionBy->reverse();//给精灵添加移动的动作m_tamara->runAction( actionTo);m_grossini->runAction( CCSequence::create(actionBy, actionByBack, NULL));m_kathia->runAction(CCMoveTo::create(1, ccp(40,40))); bRet = true; } while (0); return bRet;}
3、移动示例效果图。
三、缩放动作
1、首先看看CCScaleTo和CCScaleBy的使用方法。
<1> CCScaleTo
CCScaleTo::create(float duration,float s)
作用:创建一个缩放的动作。
参数1:达到缩放大小所需的时间(秒)。
参数2:缩放的比例。其值=1:原大小,其值>1:方法,其值<1:缩放。
<2> CCScaleBy
CCScaleBy::create(float duration,float s)
作用:创建一个缩放的动作。
参数1:达到缩放大小所需的时间(秒)。
参数2:缩放的比例。
CCScaleBy支持reverse()函数,可以获取其反向动作。
2、示例代码如下所示。
首先新建Cocos2D-X项目,然后在HelloWorldScene.cpp文件的init函数中添加如下代码。
bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //获得尺寸大小CCSize s = CCDirector::sharedDirector()->getWinSize();//创建精灵 CCSprite* m_grossini = CCSprite::create("grossini.png");CCSprite* m_tamara = CCSprite::create("grossinis_sister1.png");CCSprite* m_kathia = CCSprite::create("grossinis_sister2.png");//设置精灵的位置m_grossini->setPosition( ccp(s.width/2, s.height/2));m_tamara->setPosition( ccp(s.width/4, s.height/2)); m_kathia->setPosition( ccp(3 * s.width/4, s.height/2));//添加精灵到图层addChild(m_grossini, 1);addChild(m_tamara, 2);addChild(m_kathia, 3);CCActionInterval* actionTo = CCRotateTo::create( 2, 45);CCActionInterval* actionTo2 = CCRotateTo::create( 2, -45);CCActionInterval* actionTo0 = CCRotateTo::create(2 , 0);m_tamara->runAction( CCSequence::create(actionTo, actionTo0, NULL));CCActionInterval* actionBy = CCRotateBy::create(2 , 360);CCActionInterval* actionByBack = actionBy->reverse();m_grossini->runAction( CCSequence::create(actionBy, actionByBack, NULL));m_kathia->runAction( CCSequence::create(actionTo2, actionTo0->copy()->autorelease(), NULL)); bRet = true; } while (0); return bRet;}
3、缩放示例效果图。
四、扭曲动作
1、先来看看CCSkewTo和CCSkewBy的使用方法。
<1> CCSkewTo
CCSkewTo::create(float t,float sx,float sy)
作用:创建一个倾斜的动作。
参数1:倾斜到特定角度所需的时间(秒)。
参数2:x轴的倾斜角度。
参数3:y轴的倾斜角度。
<2> CCSkewBy
CCSkewBy::create(float t,float sx,float sy)
作用:创建一个倾斜的动作。
参数1:倾斜到特定角度所需的时间(秒)。
参数2:x轴的倾斜角度。
参数3:y轴的倾斜角度。
CCSkewBy支持reverse()函数,可以获取其反向动作。
2、示例代码如下所示。
首先新建Cocos2D-X项目,然后在HelloWorldScene.cpp文件的init函数中添加如下代码。
bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init());//获得尺寸大小CCSize s = CCDirector::sharedDirector()->getWinSize();//创建精灵 CCSprite* m_grossini = CCSprite::create("grossini.png");CCSprite* m_tamara = CCSprite::create("grossinis_sister1.png");CCSprite* m_kathia = CCSprite::create("grossinis_sister2.png");//设置精灵的位置m_grossini->setPosition( ccp(s.width/2, s.height/2));m_tamara->setPosition( ccp(s.width/4, s.height/2)); m_kathia->setPosition( ccp(3 * s.width/4, s.height/2));//添加精灵到图层addChild(m_grossini, 1);addChild(m_tamara, 2);addChild(m_kathia, 3);//创建扭曲的动作CCActionInterval *actionTo = CCSkewTo::create(2, 37.2f, -37.2f);CCActionInterval *actionToBack = CCSkewTo::create(2, 0, 0);CCActionInterval *actionBy = CCSkewBy::create(2, 0.0f, -90.0f);CCActionInterval *actionBy2 = CCSkewBy::create(2, 45.0f, 45.0f);CCActionInterval *actionByBack = actionBy->reverse();//给精灵添加动作m_tamara->runAction(CCSequence::create(actionTo, actionToBack, NULL));m_grossini->runAction(CCSequence::create(actionBy, actionByBack, NULL));m_kathia->runAction(CCSequence::create(actionBy2, actionBy2->reverse(), NULL)); bRet = true; } while (0); return bRet;}
3、扭曲示例效果图。
五、旋转动作
1、先来看看CCRotateTo和CCRotateBy的使用方法。
<1> CCRotateTo
CCRotateTo::create(float duration,float fDeltaAngle)
作用:创建一个旋转的动作。
参数1:旋转到特定角度所需的时间(秒)。
参数2:旋转的角度,范围是[0,360]。
<2> CCSRotateBy
CCRotateBy::create(float duration,float fDeltaAngle)
作用:创建一个旋转的动作。
参数1:旋转到特定角度所需的时间(秒)。
参数2:旋转的角度,范围是[0,360]。
CCRotateBy支持reverse()函数,可以获取其反向动作。
2、示例代码如下所示。
首先新建Cocos2D-X项目,然后在HelloWorldScene.cpp文件的init函数中添加如下代码。
bool HelloWorld::init(){ bool bRet = false; do { CC_BREAK_IF(! CCLayer::init()); //获得尺寸大小CCSize s = CCDirector::sharedDirector()->getWinSize();//创建精灵 CCSprite* m_grossini = CCSprite::create("grossini.png");CCSprite* m_tamara = CCSprite::create("grossinis_sister1.png");CCSprite* m_kathia = CCSprite::create("grossinis_sister2.png");//设置精灵的位置m_grossini->setPosition( ccp(s.width/2, s.height/2));m_tamara->setPosition( ccp(s.width/4, s.height/2)); m_kathia->setPosition( ccp(3 * s.width/4, s.height/2));//添加精灵到图层addChild(m_grossini, 1);addChild(m_tamara, 2);addChild(m_kathia, 3);CCActionInterval* actionTo = CCRotateTo::create( 2, 45);CCActionInterval* actionTo2 = CCRotateTo::create( 2, -45);CCActionInterval* actionTo0 = CCRotateTo::create(2 , 0);m_tamara->runAction( CCSequence::create(actionTo, actionTo0, NULL));CCActionInterval* actionBy = CCRotateBy::create(2 , 360);CCActionInterval* actionByBack = actionBy->reverse();m_grossini->runAction( CCSequence::create(actionBy, actionByBack, NULL));m_kathia->runAction( CCSequence::create(actionTo2, actionTo0->copy()->autorelease(), NULL)); bRet = true; } while (0); return bRet;}
3、旋转示例效果图。
源码下载地址
- 【Cocos2d-X开发学习笔记】第13期:动作类之基本动作的使用(上)
- 【Cocos2d-X开发学习笔记】第15期:动作类之摄像机动作和基本样条动作的使用
- 【Cocos2d-X开发学习笔记】第14期:动作类之基本动作的使用(下)
- 【Cocos2d-X开发学习笔记】第16期:动作类之缓冲动作和组合动作的使用
- 【Cocos2d-X开发学习笔记】第17期:动作类之跟随动作、可调整速度动作以及动作延时的使用
- 【Cocos2d-X开发学习笔记】第19期:动作管理类(CCActionManager)的使用
- 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用
- 【Cocos2d-X开发学习笔记】第20期:网格动作类的使用
- 【Cocos2d-X开发学习笔记】第12期:动作类CCAction的详细讲解
- 【cocos2d-x】动作类之缓冲动作和组合动作的使用(变速动作)
- 【Cocos2d-X开发学习笔记】第08期:渲染框架之文本类的使用
- 【Cocos2d-X开发学习笔记】第08期:渲染框架之文本类的使用
- cocos2d-x学习笔记13:动作4:其他动作
- (转)cocos2d-x学习笔记13:动作4:其他动作
- Cocos2d-x学习笔记(3) - 动作
- Cocos2d-x动作学习笔记
- 【Cocos2d-X开发学习笔记】第02期:渲染框架之节点类(CCNode)的使用
- 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用
- 【代码大全】第16章 控制循环
- GDB调试
- 【代码大全】第17章 不常见的控制结构
- “OVERRIDE”: 未知重写说明符
- Windows Event 的各个相关函数解释 及 简单例子一个
- 【Cocos2d-X开发学习笔记】第13期:动作类之基本动作的使用(上)
- 【代码大全】第18章 表驱动法
- GRE(Generic Routing Encapsulation,通用路由封装)简介
- 位图Bitmap
- 【代码大全】第19章 一般控制问题
- 新的开始 新的征程
- POJ-3680-Intervals
- 最优间隔分类、原始/对偶问题、SVM对偶—斯坦福ML公开课笔记7
- 【代码大全】第20章 软件质量概述