2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO
1
缓冲动作
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
|
man->setScale(0.8f); woman->setScale(0.8f); man->setPosition(ccp(100, 80)); woman->setPosition(ccp(100,240)); |
|
CCMoveTo * manTo = CCMoveTo::create(2, ccp(400,80)); CCMoveTo * womanTo = CCMoveTo::create(2, ccp(400, 240)); CCEaseExponentialIn *in = CCEaseExponentialIn::create(manTo); CCEaseExponentialOut *out = CCEaseExponentialOut::create(manTo); CCEaseExponentialInOut * inOut = CCEaseExponentialInOut::create(manTo); man->runAction(inOut); woman->runAction(womanTo); |
|
CCEaseElasticIn *in = CCEaseElasticIn::create(manTo); CCEaseElasticOut *out = CCEaseElasticOut::create(manTo); CCEaseElasticInOut * inOut = CCEaseElasticInOut::create(manTo); |
|
#include #include CCScene *T13Action::scene() { CCScene * T13Action * scene->addChild(layer); return } bool { TBack::init(); CCSprite * CCSprite * man->setPosition(ccp(100, CCMoveBy *by CCMoveBy CCEaseExponentialIn * in = CCEaseExponentialInOut CCEaseExponentialInOut * //CCEaseElasticIn * in = CCEaseElasticIn::create(by2); //CCEaseElasticOut * out = CCEaseElasticOut::create(by2); //CCEaseElasticInOut * inOut = CCEaseElasticInOut::create(by2); //CCEaseBounceIn //CCEaseBounceOut * out = CCEaseBounceOut::create(by2); //CCEaseBounceInOut * inOut = CCEaseBounceInOut::create(by2); //看精灵的执行速度 //man->runAction(in); //man->runAction(out); man->runAction(inOut); addChild(man); return } //原生画图,每一帧都会画图 void { CCPointArray *array = array->addControlPoint(ccp(100, array->addControlPoint(ccp(200, array->addControlPoint(ccp(200, array->addControlPoint(ccp(300, array->addControlPoint(ccp(300, array->addControlPoint(ccp(450, ccDrawCardinalSpline(array, 1, 100); } |
|
执行结果: |
2
并行动作和序列动作
CCSequence
中持续时间为全部动作累计的总合。CCSequence
中不能够
有CCRepeatForever
动作。
CCSpwan中持续时间为并行动作持续时间最长的决定。
3
假动作
CCCallFunc系列动作包含CCallFunc()、CCCallFuncN()、CCCallFuncND,以及CCCallFuncO四个动作,CCCallFunc系列动作的后缀”N”表示Node參数,指的是运行动作的对象,”D”表示Data參数,指的是用户自己定义的数据。”O”表示对象,指的是一个用户自己定义的CCObject參数。
在不同的情况下。我们能够依据不同的需求来选择不同的CCCallFunc动作。
|
typedef void (CCObject::*SEL_CallFunc)(); |
|
//无參类型 typedef void (CCObject::*SEL_CallFuncN)(CCNode*); //传递CCNode * typedef void (CCObject::*SEL_CallFuncND)(CCNode*, void*); //传递CCNode * typedef void (CCObject::*SEL_CallFuncO)(CCObject*); //传递CCObject *类型变量 #define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR) #define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR) #define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR) #define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR) |
|
CCCallFunc * func = CCCallFunc::create(this, callfunc_selector(T13Action::funcCallBack)); CCCallFuncN * func = CCCallFuncN::create(this, callfuncN_selector(T13Action::funcNCallBack)); CCCallFuncND * func = CCCallFuncND::create(this, callfuncND_selector(T13Action::funcNDCallBack), (void *)"30"); CCArray * array = CCArray::create(); array->addObject(woman); CCCallFuncO * func = CCCallFuncO::create(this, callfuncO_selector(T13Action::funcOCallBack),(CCObject*)array); CCSequence * seq = CCSequence::create(to, func, NULL); man->runAction(seq); addChild(man); |
案例说明:
|
无參的假动作 void |
|
T13Action.h |
|
#ifndef #define #include #include USING_NS_CC; class { public: static CREATE_FUNC(T13Action); bool void //无參的假动作 void //带调用者的假动作 void //带有调用者和数据的假动作 void //带有对象的假动作 void }; #endif |
|
T13Action.cpp |
|
#include #include CCScene *T13Action::scene() { CCScene * T13Action * scene->addChild(layer); return } bool { TBack::init(); CCSprite * CCSprite * man->setPosition(ccp(100, CCMoveBy *by2 //假动作就是当一个动作运行完了之后又运行的一个动作 CCCallFunc * CCSequence * man->runAction(seq); addChild(man); return } //原生画图。每一帧都会画图 void { CCPointArray *array = array->addControlPoint(ccp(100, array->addControlPoint(ccp(200, array->addControlPoint(ccp(200, array->addControlPoint(ccp(300, array->addControlPoint(ccp(300, array->addControlPoint(ccp(450, ccDrawCardinalSpline(array, 1, 100); } //无參的假动作 void CCLog("action } |
|
执行结果(执行速度是变速的): 输出结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""> |
4
假动作
|
#ifndef #define #include #include USING_NS_CC; class { public: static CREATE_FUNC(T13Action); bool //无參的假动作 void //带调用者的假动作 void //带有调用者和数据的假动作 void //带有对象的假动作 void }; #endif |
|
#include #include CCScene *T13Action::scene() { CCScene * T13Action * scene->addChild(layer); return } bool { TBack::init(); CCSprite * CCSprite * man->setPosition(ccp(50, woman->setPosition(ccp(50,260)); //创建一个CCArray,在使用前调用retain(),要注意的是在最后退出之 //后要在onExit()中将array进行release() CCArray * array = array->retain(); array->addObject(woman); CCMoveBy *by2 CCCallFuncN * callfuncN_selector(T13Action::funcNCallBack)); //调用 CCCallFuncND *funcND callfuncND_selector(T13Action::funcNDCallBack), (void*)"30"); CCCallFuncO callfuncO_selector(T13Action::funcOCallBack), array); CCSequence * man->runAction(seq); addChild(man); return } //当中CCNode表示的是动作的运行者 void { CCSprite *spr //将精灵从屏幕上 //spr->removeFromParentAndCleanup(true); CCJumpBy * spr->runAction(by); } void { CCSprite *spr //以下是取出数据的代码 CCString * //给精灵旋转 spr->setRotation(str->floatValue()); } void { CCArray * array = (CCArray*)obj; //从array中取出第0个元素 CCSprite * addChild(spr); } |
2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO的更多相关文章
- libevent库介绍--事件和数据缓冲
首先在学习libevent库的使用前,我们还要从基本的了解开始,已经熟悉了epoll以及reactor,然后从event_base学习,依次学习事件event.数据缓冲Bufferevent和数据封装 ...
- 结构-行为-样式-Jquery实现延迟加载特效(数据缓冲特效)
最近在做一个地产项目的过程中,原来用的延迟加载的插件在IE下会使浏览器突然缩小,这个让客户很不满意,于是就考虑到兼容性的问题决定自己写一个插件.思路:定义一个代码块,手动加载到页面,然后手动删除. ...
- unix中数据缓冲区高速缓冲的设计
目录 1. 概述 2. 缓冲区的设计 2.1 缓冲区头部 2.2 缓冲区的结构 2.3 缓冲区的检索算法 2.3. 申请一个缓冲区算法 getblk 2.3.2 释放一个缓冲区算法 brelse 2. ...
- oracel数据导出导入
一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...
- Oracle 数据导入导出
一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...
- 解决Android与服务器交互大容量数据问题
对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...
- JAVA多线程之间共享数据BlockingQueue介绍
在JAVA的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利. ...
- MySQL数据库主键设计原则
目录 1. 主键定义... 5 2. 主键设计原则... 5 2.1 确保主键的无意义性... 5 2.2 采用整型主键... 5 2.3 减少主键的变动... 5 2.4 避免重复使用主键... 6 ...
随机推荐
- 数据库里面DataTime时间类型字段,如果为null时
tran.TransactionTime = bet.CreationDate.ToString() == "0001/1/1 0:00:00" ? DateTime.Now : ...
- ***微信浏览器禁止app下载链接怎么办
通过扫描二维码下载APP已成为一个非常方便的方式,微信也成为扫描二维码重要的工具,但是扫描后微信浏览器会对APK和appStore的链接进行屏蔽,导致用户无法正常下载.本文提供两个迂回的解决方案:1. ...
- 【Uva11212】 Editing a Book(IDA*)
[题意] 有n个数字的全排列,每次可以剪切一段粘贴到某个位置.问最后变成升序最少多少步. 如"{2,4,1,5,3,6}要2步 {3,4,5,1,2}只要一步 [分析] 迭代深搜真的AC了也 ...
- 雷军的B面:那些赔到血本无归的失败投资案例
文/李红双 雷军投资方向偏多元化布局,从电商到房地产,从互联网社区到移动互联网,多方跨界的结果必然是有失有得.本文扒一扒“雷军系”中最惨烈的电商投资,凡客诚品融资5.3亿美元目前处于垮台边缘,乐淘融资 ...
- Android 动态刷新listview中的数据
之前一直困扰listview刷新后位置的问题,现在才明白,原来不能重新设置listview的adapter,而应该用notifyDataSetChanged()来刷新,这样位置就不会置顶. 下面做了一 ...
- Oracle从11.2.0.2开始,数据库补丁包是一个完整安装包(转)
从11.2.0.2开始,数据库补丁包是一个完整安装包.也就是说:比如要打11.2.0.2的补丁包,直接用11.2.0.2包来安装就可以了,不需要像10G一样先安装数据库软件再来打补丁包. 如果已经安装 ...
- Oracle系列之异常处理
涉及到表的处理请参看原表结构与数据 Oracle建表插数据等等 使用select into语句读取tb_Employee的一行,使用异常处理处理no_data_found和two_many_rows ...
- word 中Sentences、Paragraph等含义和用法
word 中有Words,Characters,Sentences.Paragraph,Sections 具体含义如下表达式 含义 返回的对象 Words(index) ...
- STL for_each()
http://www.cplusplus.com/reference/algorithm/for_each/ std::move()用于c++11 http://www.cplusplus.com/r ...
- 【转】centos 6.4 samba 安装配置
关掉防火墙 service iptables stop chkconfig iptables off (永久关闭防火墙) 关闭SELinux vi /etc/sysconfig/selinu ...