版权声明:本文为博主原创文章。未经博主同意不得转载。

https://blog.csdn.net/q269399361/article/details/28265477

还记得我们上一节讲的瞬时动作吗?有翻转、显示隐藏、位置移动、移除,只是那些都不好玩,今天我们来介绍最经常使用的几种延时动作

什么是延时动作呢?

就是在指定时间内完毕该动作。这样的是能看到效果的

ok,我们略微归类一下。这部分内容不是一般的多

移动:(MoveTo、MoveBy)

旋转(RotateTo、RotateBy)

缩放(ScaleTo、ScaleBy)

倾斜(SkewTo、SkewBy)

跳跃(JumpTo、JumpBy)

闪烁(Blink)

渐隐(FadeIn/FadeOut)

渐变(TintTo、TintBy)

先就这些吧,后面还有非常多非常多。。

。。

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayer
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init(); // there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::CCScene* scene(); // implement the "static node()" method manually
CREATE_FUNC(HelloWorld);
}; #endif // __HELLOWORLD_SCENE_H__

#include "HelloWorldScene.h"

USING_NS_CC;

CCScene* HelloWorld::scene()
{
// 'scene' is an autorelease object
CCScene *scene = CCScene::create(); // 'layer' is an autorelease object
HelloWorld *layer = HelloWorld::create(); // add layer as a child to scene
scene->addChild(layer); // return the scene
return scene;
} // on "init" you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
} CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCSprite* pSprite1= CCSprite::create("Icon.png");
pSprite1->setPosition(ccp(pSprite1->getContentSize().width/2,visibleSize.height/2));
this->addChild(pSprite1);
return true;
}

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcTI2OTM5OTM2MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

准备好素材

ok,接下来我们先来看MoveTo

 CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCSprite* pSprite1= CCSprite::create("Icon.png");
CCSize pSpriteSize= pSprite1->getContentSize();
pSprite1->setPosition(ccp(pSpriteSize.width/2,visibleSize.height/2));
this->addChild(pSprite1);
CCActionInterval* pMoveTo=CCMoveTo::create(2.0f,ccp(visibleSize.width-pSpriteSize.width/2,visibleSize.height/2));
pSprite1->runAction(pMoveTo);

效果图就不贴了,

我们首先创建了精灵,初始位置在最左边,

然后呢。我们穿件了一个CCMoveTo对象

2秒钟之内移动到最右边

最后,精灵运行该动作

使用方法非常easy,大家有没有发现为什么都有个To和By呢??他们之间的差别是什么

OK,我们在来看看MoveBy

CCActionInterval* pMoveBy=CCMoveBy::create(2.0f,ccp(visibleSize.width-pSpriteSize.width/2,visibleSize.height/2));
pSprite1->runAction(pMoveBy);

我们发现它将移动到了,窗体的右上角

这是为什么呢???

CCMoveTo:   它是以窗体的左下角为原点。还记得坐标系统吗??它移动到(窗体的宽度-精灵大小宽度的一半。窗体高度的一半)。

CCMoveBy:它就不一样的,它以精灵所在坐标的中心点为原点进行移动的,等于就是(窗体的宽度-精灵大小宽度的一半+精灵所在的X坐标,窗体高度的一半+精灵所在的Y坐标)

总之。To和By的差别就在于,

To是实际的坐标,它是正对于窗体的

By是相对于精灵所在的坐标。(事实上,我个人理解就是在正对窗体的坐标中它自己在默认加上精灵所在的坐标而已)

(比方。CCMoveTo 移动到(250,250),那就是窗体所在的250,250的位置)

(CCMoveBy就是(250+精灵的X位置。250+精灵的Y位置)而已)

旋转:RotateTo、RotateBy

//參数1:延时时间
//參数2:X轴旋转的角度
//參数3:Y轴旋转的角度
CCActionInterval* pCCRotateTo= CCRotateTo::create(2.0f,10.0f,50.0f);
pSprite1->runAction(pCCRotateTo);

By和To的差别就不在说了  刚才已经解释过了

无非就是在当前基础上在加上当前精灵的X或Y轴的角度

缩放(ScaleTo、ScaleBy)

//參数1:延时时间
//參数2:X轴缩放的倍数 (不缩放为1,0.5为缩小一倍,2为放大一倍)
//參数3:Y轴缩放的倍数
CCActionInterval* pCCScaleTo=CCScaleTo::create(2.0f,0.5f,1);

倾斜(SkewTo、SkewBy)

//參数1:延时时间
//參数2:X轴倾斜的角度 (0为不倾斜。倾斜的角度越大看到的效果越明显)
//參数3:Y轴倾斜的角度
CCActionInterval* pCCSkewTo= CCSkewTo::create(2.0f,20.0f,0);

跳跃(JumpTo、JumpBy)

//參数1:延时时间
//參数2:须要跳跃到什么位置(即跳跃的终点)
//參数3:跳跃的高度
//參数4:从開始到跳跃结束的过程中须要跳跃几次
CCActionInterval* pCCJumpTo= CCJumpTo::create(2.0f,ccp(visibleSize.width-pSpriteSize.width/2,visibleSize.height/2),100,3);

闪烁(Blink)

//參数1:延时时间
//參数2:须要闪烁的次数
CCActionInterval* pCCBlink= CCBlink::create(2.0f,5);

渐隐(FadeIn/FadeOut)

//參数:延时时间(多少秒后全然隐藏)
CCActionInterval* pCCFadeOut= CCFadeOut::create(2);

渐变(TintTo、TintBy)

//參数1:延时时间
//參数2,3,4:分别相应颜色的RGB值
CCActionInterval* pCCTintTo=CCTintTo::create(2.0f,255,0,0);

OK,搞定,有意思吧??
后面还有非常多呢。比方,组合动作,持续性动作。顺序动作。回调动作等等.....
 
总结一下:
今天学习了
移动(CCMoveTo)
翻转(CCRotateTo)
倾斜(CCSkewTo)
缩放(CCScaleTo)
跳跃(CCJumpTo)
闪烁(CCBlink)
渐隐(CCFadeIn)
渐变(CCTintTo)
还有最重要的一点,To和By的差别
附上所写的代码:
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
} CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCSprite* pSprite1= CCSprite::create("Icon.png");
CCSize pSpriteSize= pSprite1->getContentSize();
pSprite1->setPosition(ccp(pSpriteSize.width/2,visibleSize.height/2));
this->addChild(pSprite1);
//CCActionInterval* pMoveTo=CCMoveTo::create(2.0f,ccp(visibleSize.width-pSpriteSize.width/2,visibleSize.height/2));
//CCActionInterval* pMoveBy=CCMoveBy::create(2.0f,ccp(visibleSize.width-pSpriteSize.width/2,visibleSize.height/2)); ////參数1:延时时间
////參数2:X轴旋转的角度
////參数3:Y轴旋转的角度
//CCActionInterval* pCCRotateTo= CCRotateBy::create(2.0f,10.0f,50.0f); //參数1:延时时间
//參数2:X轴缩放的倍数 (不缩放为1,0.5为缩小一倍,2为放大一倍)
//參数3:Y轴缩放的倍数
//CCActionInterval* pCCScaleTo=CCScaleTo::create(2.0f,0.5f,1); //參数1:延时时间
//參数2:X轴倾斜的角度 (0为不倾斜。倾斜的角度越大看到的效果越明显)
//參数3:Y轴倾斜的角度
//CCActionInterval* pCCSkewTo= CCSkewTo::create(2.0f,20.0f,0); //參数1:延时时间
//參数2:须要跳跃到什么位置(即跳跃的终点)
//參数3:跳跃的高度
//參数4:从開始到跳跃结束的过程中须要跳跃几次
//CCActionInterval* pCCJumpTo= CCJumpTo::create(2.0f,ccp(visibleSize.width-pSpriteSize.width/2,visibleSize.height/2),100,3); //參数1:延时时间
//參数2:须要闪烁的次数
//CCActionInterval* pCCBlink= CCBlink::create(2.0f,5); //參数:延时时间(多少秒后全然隐藏)
//CCActionInterval* pCCFadeOut= CCFadeOut::create(2); //參数1:延时时间
//參数2,3,4:分别相应颜色的RGB值
CCActionInterval* pCCTintTo=CCTintTo::create(2.0f,255,0,0);
pSprite1->runAction(pCCTintTo);
return true;
}

Cocos2D-X2.2.3学习笔记13(延时动作)的更多相关文章

  1. Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...

  2. SQL反模式学习笔记13 使用索引

    目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引.  索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...

  3. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  4. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  5. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  6. 并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理

    · 在并发编程中,我们有时候会需要使用到线程安全的队列,而在Java中如果我们需要实现队列可以有两种方式,一种是阻塞式队列.另一种是非阻塞式的队列,阻塞式队列采用锁来实现,而非阻塞式队列则是采用cas ...

  7. python 学习笔记 13 -- 经常使用的时间模块之time

    Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: *    time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...

  8. MiZ702学习笔记13——ZYNQ通过AXI-Lite与PL交互

    在<MiZ702学习笔记7——尝试自制带总线IP>,我曾提到了AXI4-Lite的简单用法,驱动了下流水灯,只涉及到了写总线.今天,我想利用之前的VGA模块,将AXI4-Lite的读写都应 ...

  9. 【干货】Html与CSS入门学习笔记1-3

    从23号开始用了4天时间看完了<Head First Html与CSS>这本书,本书讲解方式深入浅出,便于理解,结合习题,便于记忆,是一本不错的入门书.下面是本书的学习笔记: 一.认识HT ...

随机推荐

  1. ubuntu vim简单命令

    1.ubuntu  vim 一些基本的命令. :set nu  或着 set number   设置行数 :set nonu          取消行数 ctrl+u                将 ...

  2. uinex 常用命令

    删除文件夹实例:rm -rf /var/log/httpd/access将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 删除文件使用实例:rm -f /var/log/ ...

  3. 未能加载文件或程序集“LinqToExcel”或它的某一个依赖项。试图加载格式不正确的程序。

    未能加载文件或程序集“*”或它的某一个依赖项.试图加载格式不正确的程序. 原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS—— ...

  4. Access-Control-Allow-Origin实现跨域访问 跨域

    总结:跨域的get,post请求 后台可以设置 Access-Control-*相关的参数,让浏览器支持. // 指定允许其他域名访问 header('Access-Control-Allow-Ori ...

  5. CCF 2015-03-3 节日

    输出y1到y2年之间的每一年的a月份的第b个周c.感觉像是一个恶心的模拟.更像一个很恶心的小学奥赛题. 题目:http://115.28.138.223/view.page?gpid=T25 考试的时 ...

  6. 合法的MAC地址

    以太网的地址为48位,由ieee统一分配给网卡制造商,每个网卡的地址都必须是全球唯一的.共6个字节的长度 字节 5 4 3 2 1 0  位 47..40 39..32 31..24 23..16 1 ...

  7. 跟我一起学习ASP.NET 4.5 MVC4.0(三)

    今天我们继续ASP.NET 4.5 MVC 4.0,前两天熟悉了MVC4.0在VS11和win8下的更新,以及MVC中的基础语法和几个关键字的使用.了解了这些就可以对MVC进一步认识,相信很多人都对M ...

  8. 浅谈:从为什么学习python到如何学好python

    虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...

  9. 【数据库】MFC ODBC(二)

    三.CRecordset类 1.IsBOF与IsEOF (1)IsBOF 如果记录集没有记录,或已经向前游动到第一个记录之前,则返回非零:否则返回0.详细说明如下: 1)访问Open函数之后,如果记录 ...

  10. node 相关

    1. 更新npm : npm install npm -g / cnpm install npm -g 2.安装cnpm npm install -g cnpm --registry=https:// ...