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

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. Eclipse偏好设置的导入与导出

    偏好导入:File--->Import

  2. 使用a标签实现软件下载及下载量统计

    通常最简单的软件下载就是采用如下方式: <a id="welcomeMiddleBtn" href="${basePath}/files/client/instal ...

  3. 在Eclipse中Attach Source

    在Eclipse中,有时需要查看类.方法和变量的声明和定义的源代码. 但是在F3查看一些在JDK库中声明/定义的类.方法和 变量的源代码时,Eclipse给你打开的却是相应的.class文件(byte ...

  4. 一、Object类

    1.Object类是所有类的父类 声明一个类的时候,实际上已经默认继承了Object类 package property; public class Hero extends Object{ Stri ...

  5. zk如何实现watch

    在客户端发送命令:stat /zhang watch 在zk server中产生如下图的调用栈: //在DataTree类中有 private final WatchManager dataWatch ...

  6. Freemaker FTL指令常用标签及语法

    https://blog.csdn.net/pengpengpeng85/article/details/52070602 FTL指令常用标签及语法 注意:使用freemaker,要求所有标签必须闭合 ...

  7. 华为root手机

  8. python 安装 scapy windows 10 64bit

    简介: 前段时间装的pypcap做嗅探.打包受阻.因为我都是在windows做的.也要打包到exe给别人用. 所以尝试了一下scapy,也可以嗅探,貌似功能更强大.先用sniff吧. 这个也不是在ve ...

  9. 在 Ubuntu 14.04 Chrome中安装Flash Player(转)

    在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium  一个 Pepper Flash Player For Chromium 的安装器已经被 Ubu ...

  10. ESET Smart Security 免费60天

    领取地址:http://goo.gl/aEl2Xy 兑换地址:http://goo.gl/h1n62K