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
"T13Action.h"

#include
"AppMacros.h"

CCScene *T13Action::scene()

{

CCScene *
scene =
CCScene::create();

T13Action *
layer =
T13Action::create();

scene->addChild(layer);

return
scene;

}

bool
T13Action::init()

{

TBack::init();

CCSprite *
man =
CCSprite::create("man.png");

CCSprite *
woman =
CCSprite::create("woman.png");

man->setPosition(ccp(100,
160));

CCMoveBy *by
= CCMoveBy::create(2,ccp(300,0));

CCMoveBy
*by2
= CCMoveBy::create(2,ccp(300,0));

CCEaseExponentialIn * in =
CCEaseExponentialIn::create(by2);

CCEaseExponentialInOut
* out =
CCEaseExponentialInOut::create(by2);

CCEaseExponentialInOut *
inOut =
CCEaseExponentialInOut::create(by2);

//CCEaseElasticIn * in = CCEaseElasticIn::create(by2);

//CCEaseElasticOut * out = CCEaseElasticOut::create(by2);

//CCEaseElasticInOut * inOut = CCEaseElasticInOut::create(by2);

//CCEaseBounceIn 
*in = CCEaseBounceIn::create(by2);

//CCEaseBounceOut * out = CCEaseBounceOut::create(by2);

//CCEaseBounceInOut * inOut = CCEaseBounceInOut::create(by2);

//看精灵的执行速度

//man->runAction(in);

//man->runAction(out);

man->runAction(inOut);

addChild(man);

return
true;

}

//原生画图,每一帧都会画图

void
T13Action::draw()

{

CCPointArray *array =
CCPointArray::create(6);

array->addControlPoint(ccp(100,
160));

array->addControlPoint(ccp(200,
160));

array->addControlPoint(ccp(200,
250));

array->addControlPoint(ccp(300,
250));

array->addControlPoint(ccp(300,
160));

array->addControlPoint(ccp(450,
160));

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
funcCallBack();

T13Action.h

#ifndef
_T13Action_H__

#define
_T13Action_H__

#include
"cocos2d.h"

#include
"TBack.h"

USING_NS_CC;

class
T13Action :public
TBack

{

public:

static
CCScene *
scene();

CREATE_FUNC(T13Action);

bool
init();

void
draw();

//无參的假动作

void
funcCallBack();

//带调用者的假动作

void
funcNCallBack(CCNode
* node);

//带有调用者和数据的假动作

void
funcNDCallBack(CCNode
* node,
void *
data);

//带有对象的假动作

void
funcOCallBack(CCObject
* obj);

};

#endif

T13Action.cpp

#include
"T13Action.h"

#include
"AppMacros.h"

CCScene *T13Action::scene()

{

CCScene *
scene =
CCScene::create();

T13Action *
layer =
T13Action::create();

scene->addChild(layer);

return
scene;

}

bool
T13Action::init()

{

TBack::init();

CCSprite *
man =
CCSprite::create("man.png");

CCSprite *
woman =
CCSprite::create("woman.png");

man->setPosition(ccp(100,
160));

CCMoveBy *by2
= CCMoveBy::create(2,
ccp(300, 0));

//假动作就是当一个动作运行完了之后又运行的一个动作

CCCallFunc *
func =
CCCallFunc::create(this,callfunc_selector(T13Action::funcCallBack));

CCSequence *
seq =
CCSequence::create(by2,
func,
NULL);

man->runAction(seq);

addChild(man);

return
true;

}

//原生画图。每一帧都会画图

void
T13Action::draw()

{

CCPointArray *array =
CCPointArray::create(6);

array->addControlPoint(ccp(100,
160));

array->addControlPoint(ccp(200,
160));

array->addControlPoint(ccp(200,
250));

array->addControlPoint(ccp(300,
250));

array->addControlPoint(ccp(300,
160));

array->addControlPoint(ccp(450,
160));

ccDrawCardinalSpline(array, 1, 100);

}

//无參的假动作

void
T13Action::funcCallBack()
{

CCLog("action
is over");

}

执行结果(执行速度是变速的):

输出结果:

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

4
假动作

#ifndef
_T13Action_H__

#define
_T13Action_H__

#include
"cocos2d.h"

#include
"TBack.h"

USING_NS_CC;

class
T13Action :public
TBack

{

public:

static
CCScene *
scene();

CREATE_FUNC(T13Action);

bool
init();

//无參的假动作

void
funcCallBack();

//带调用者的假动作

void
funcNCallBack(CCNode
* node);

//带有调用者和数据的假动作

void
funcNDCallBack(CCNode
* node,
void *
data);

//带有对象的假动作

void
funcOCallBack(CCObject
* obj);

};

#endif

#include
"T13Action.h"

#include
"AppMacros.h"

CCScene *T13Action::scene()

{

CCScene *
scene =
CCScene::create();

T13Action *
layer =
T13Action::create();

scene->addChild(layer);

return
scene;

}

bool
T13Action::init()

{

TBack::init();

CCSprite *
man =
CCSprite::create("man.png");

CCSprite *
woman =
CCSprite::create("woman.png");

man->setPosition(ccp(50,
160));

woman->setPosition(ccp(50,260));

//创建一个CCArray,在使用前调用retain(),要注意的是在最后退出之

//后要在onExit()中将array进行release()

CCArray * array =
CCArray::create();

array->retain();

array->addObject(woman);

CCMoveBy *by2
= CCMoveBy::create(2,
ccp(300, 0));

CCCallFuncN *
funcN =
CCCallFuncN::create(this,

callfuncN_selector(T13Action::funcNCallBack));

//调用

CCCallFuncND *funcND
= CCCallFuncND::create(this,

callfuncND_selector(T13Action::funcNDCallBack),

(void*)"30");

CCCallFuncO 
* funcO =
CCCallFuncO::create(this,

callfuncO_selector(T13Action::funcOCallBack),

array);

CCSequence *
seq =
CCSequence::create(by2,
funcO,
NULL);

man->runAction(seq);

addChild(man);

return
true;

}

//当中CCNode表示的是动作的运行者

void
T13Action::funcNCallBack(CCNode
*node)

{

CCSprite *spr
= (CCSprite *)node;

//将精灵从屏幕上

//spr->removeFromParentAndCleanup(true);

CCJumpBy *
by =
CCJumpBy::create(2,
ccp(0,0),100,1);

spr->runAction(by);

}

void
T13Action::funcNDCallBack(CCNode
* node,
void *
data)

{

CCSprite *spr
= (CCSprite *)node;

//以下是取出数据的代码

CCString *
str =
CCString::createWithFormat("%s",
(char*)data);

//给精灵旋转

spr->setRotation(str->floatValue());

}

void 
T13Action::funcOCallBack(CCObject
* obj)

{

CCArray * array = (CCArray*)obj;

//从array中取出第0个元素

CCSprite *
spr = (CCSprite*)array->objectAtIndex(0);

addChild(spr);

}

2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO的更多相关文章

  1. libevent库介绍--事件和数据缓冲

    首先在学习libevent库的使用前,我们还要从基本的了解开始,已经熟悉了epoll以及reactor,然后从event_base学习,依次学习事件event.数据缓冲Bufferevent和数据封装 ...

  2. 结构-行为-样式-Jquery实现延迟加载特效(数据缓冲特效)

    最近在做一个地产项目的过程中,原来用的延迟加载的插件在IE下会使浏览器突然缩小,这个让客户很不满意,于是就考虑到兼容性的问题决定自己写一个插件.思路:定义一个代码块,手动加载到页面,然后手动删除.   ...

  3. unix中数据缓冲区高速缓冲的设计

    目录 1. 概述 2. 缓冲区的设计 2.1 缓冲区头部 2.2 缓冲区的结构 2.3 缓冲区的检索算法 2.3. 申请一个缓冲区算法 getblk 2.3.2 释放一个缓冲区算法 brelse 2. ...

  4. oracel数据导出导入

    一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...

  5. Oracle 数据导入导出

    一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...

  6. 解决Android与服务器交互大容量数据问题

    对于目前的状况来说,移动终端的网络状况没有PC网络状况那么理想.在一个Android应用中,如果需要接收来自服务器的大容量数据,那么就不得不考虑客户的流量问题.本文根据笔者的一个项目实战经验出发,解决 ...

  7. 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。

    在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除. 作者:邵盛松 2009-09-05 前言 1关于的BLOB(Binary)数据的存储和读取功能主要参考了MSDN上的一篇& ...

  8. JAVA多线程之间共享数据BlockingQueue介绍

    在JAVA的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利. ...

  9. MySQL数据库主键设计原则

    目录 1. 主键定义... 5 2. 主键设计原则... 5 2.1 确保主键的无意义性... 5 2.2 采用整型主键... 5 2.3 减少主键的变动... 5 2.4 避免重复使用主键... 6 ...

随机推荐

  1. 部分视图调用方法总结(Action 、 RenderAction 、 Partial 、 RenderPartial)

    Action . RenderAction . Partial . RenderPartial 1.Action . RenderAction Action 方法以字符串的形式返回子视图,可以直接被呈 ...

  2. linux zip 命令详解

    功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时 ...

  3. Linux下打包压缩成war包和解压war包

    一. 打包成war包 因为种种原因公司需要把java程序达成war包.起先用zip命令打包,起先可以用,后来却无法使用.今天找到一个更好的办法.用jar命令,前提是要安装jdk. 把当前目录下的所有文 ...

  4. powerdesigner简单使用

    ---- 1) --- 新建流程图:新建模型,选择activity的那个就可以了. ----

  5. 【HDOJ】1061 Rightmost Digit

    这道题目可以手工打表,也可以机器打表,千万不能暴力解,会TLE. #include <stdio.h> #define MAXNUM 1000000001 ][]; int main() ...

  6. 【转】Xcode常用快捷键与技巧分享

    原文网址:http://www.jianshu.com/p/039954b0cbe0 工欲善其事必先利其器. 虽然Xcode编写objective-c or swift很完美, 但了解其工具的常用快捷 ...

  7. 热修复 RocooFix篇(一)

    吐槽之前先放一张大帅图. (md 这张图貌似有点小 不纠结这个了==) 有时候项目刚刚上线或者迭代 测试或者在线上使用测出一个bug来 真让人蛋疼 不得不重新改bug测试 打包混淆上线感觉就向find ...

  8. maven安装步骤

    第一步:配置maven环境 maven3 安装: 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成.Maven是 Apache 下的一个项目,目前最新版本是 3.0.4,我用的也是这个. ...

  9. [转]用C#实现的条形码和二维码编码解码器

    条形码的标准: 条形码的标准有ENA条形码.UPC条形码.二五条形码.交叉二五条形码.库德巴条形码.三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码.EAN商品条形码亦称通用商品条形 ...

  10. [Android]在Dagger 2中Activities和Subcomponents的多绑定(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6266442.html 在Dagger 2中Activities ...