Cocos2D-X2.2.3学习笔记13(延时动作)
版权声明:本文为博主原创文章。未经博主同意不得转载。
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);
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(延时动作)的更多相关文章
- Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...
- SQL反模式学习笔记13 使用索引
目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引. 索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...
- 并发编程学习笔记(13)----ConcurrentLinkedQueue(非阻塞队列)和BlockingQueue(阻塞队列)原理
· 在并发编程中,我们有时候会需要使用到线程安全的队列,而在Java中如果我们需要实现队列可以有两种方式,一种是阻塞式队列.另一种是非阻塞式的队列,阻塞式队列采用锁来实现,而非阻塞式队列则是采用cas ...
- python 学习笔记 13 -- 经常使用的时间模块之time
Python 没有包括相应日期和时间的内置类型.只是提供了3个相应的模块,能够採用多种表示管理日期和时间值: * time 模块由底层C库提供与时间相关的函数.它包括一些函数用于获取时钟时间和处 ...
- MiZ702学习笔记13——ZYNQ通过AXI-Lite与PL交互
在<MiZ702学习笔记7——尝试自制带总线IP>,我曾提到了AXI4-Lite的简单用法,驱动了下流水灯,只涉及到了写总线.今天,我想利用之前的VGA模块,将AXI4-Lite的读写都应 ...
- 【干货】Html与CSS入门学习笔记1-3
从23号开始用了4天时间看完了<Head First Html与CSS>这本书,本书讲解方式深入浅出,便于理解,结合习题,便于记忆,是一本不错的入门书.下面是本书的学习笔记: 一.认识HT ...
随机推荐
- 3-30 flash(api),rescue_from(); logger简介
ActionDispatch::Flash < Objec pass temporary primitive-types (String, Array, Hash) between action ...
- Eclipse 汉化方法
1 打开 http://www.eclipse.org/babel/downloads.php 2 复制 http://download.eclipse.org/technology/babel/u ...
- C#窗体控件简介ListBox(需整理)
ListBox 控件 ListBox 控件又称列表框,它显示一个项目列表供用户选择.在列表框中,用户 一次可以选择一项,也可以选择多项. 1.常用属性: (1) Items属性: 用于存放列表框中的列 ...
- Syntax error: Bad for loop variable解决办法
从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell:其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash. ...
- 如何解决请求URL长度超过配置的maxurlLength值问题
当我们批量请求的数据太多时,会出现请求的url长度超过配置maxurllength值的问题(比如一次性操作1000条数据) 1.问题描述: 我在进行批量选择单据进行发送时,出现这个问题(批量500条) ...
- 一、WCF学习之旅-创建第一个服务
WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfG ...
- Java通过class文件得到所在jar包
今天遇到一个问题,需要通过知道的class文件得到该文件所在的jar包,试过很多办法都不行,最后在网上找到了一个解决办法,如下: demo.java 1 2 String path = XXX.cla ...
- DevExpress使用教程:XtraGridControl动态添加右键菜单
在使用 GridControl 的时候经常需要添加右键菜单.一般的做法是自己创建菜单项,然后注册GridView的Mouse-Click事件,然后Show出定义好的菜单.但是涉及到一些单击事件会收到编 ...
- $(function(){})与(function($){})(jquery)
$(function(){}) function中的代码在DOM加载完成后立即执行,比window.onload()更快,因为前者不需要等待图片加载完成. (function($){})(jquery ...
- tp 邮件发送
1.需要phpmail邮件发送包, 2.邮件发送函数function sendMail($to, $title, $content){ require_once('./PHPMailer_v5.1/c ...