2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO



1
缓冲动作

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

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


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" >

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

}

时间: 2024-10-23 12:08:32

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

浅谈libevent的使用--事件和数据缓冲

首先在学习libevent库的使用前,我们还要从基本的了解开始,已经熟悉了epoll以及reactor,然后从event_base学习,依次学习事件event.数据缓冲Bufferevent和数据封装evBuffer等,再结合具体的几个实例来了解libevent库的一些基本使用,有助于我们理解它的一些内部实现(由于之前我已经写过一篇epoll反应堆模型的,所以这里就不再介绍,直接从event_base开始介绍). libevent下载与安装: 在官网上找到 libevent-2.0.22-sta

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

最近在做一个地产项目的过程中,原来用的延迟加载的插件在IE下会使浏览器突然缩小,这个让客户很不满意,于是就考虑到兼容性的问题决定自己写一个插件.思路:定义一个代码块,手动加载到页面,然后手动删除.   在项目中调用 的时候就可以实例化这个插件,调用他的打开关闭方法,这个插件主要是在Ajax请求数据的时候需要. Js代码: define([ 'jquery'], function($){ function BlockUI(){ this.boundingBox = null; } BlockUI.

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

在JAVA的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景. 一.认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示:  从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列的一端输入,从

数据的联接

SSIS Engine 使用Merge Join 转换和 Lookup转换实现SQL语句中的inner join 和 outer join 功能.任何流经Data Flow的数据都会被加载到内存的数据缓冲区中,数据缓冲区能够容纳的数据量决定了转换组件的性能.Lookup转换有一个输入,一个参考表(或叫缓存表,查找表) 和多个输出.对于输入中的每一个数据行,如果能够在参考表中找到相应的键值,那么该数据行匹配成功,从“Lookup Match Output” Path输出到下游组件:如果不能在参考表

《Linux/Unix系统编程手册》读书笔记8 (文件I/O缓冲)

<Linux/Unix系统编程手册>读书笔记 目录 第13章 这章主要将了关于文件I/O的缓冲. 系统I/O调用(即内核)和C语言标准库I/O函数(即stdio函数)在对磁盘进行操作的时候都会发生缓冲.通过缓冲可以在一定程度上将用户空间与实际的物理设备分离,还可以减少内核访问磁盘的次数. 先来看看关于内核缓冲区高速缓冲:read和write调用在对磁盘文件进行操作的时候不会直接访问磁盘,如下图所示. 例如:write(fd, "abc", 3) write调用会将"

OpenGL核心技术之数据缓存

笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 在游戏中模型的渲染显示,当模型被加载后,在引擎底层需要DX库或者OpenGL库提供数据缓冲从而将数据传输到GPU中渲染绘制,模型都是由数据组成的,这些数据需要OpenGL图形库渲染它

Linux内核中网络数据包的接收-第二部分 select/poll/epoll

和前面文章的第一部分一样,这些文字是为了帮别人或者自己理清思路的,而不是所谓的源码分析,想分析源码的,还是直接debug源码最好,看任何文档以及书都是下策.因此这类帮人理清思路的文章尽可能的记成流水的方式,尽可能的简单明了. Linux 2.6+内核的wakeup callback机制 Linux 内核通过睡眠队列来组织所有等待某个事件的task,而wakeup机制则可以异步唤醒整个睡眠队列上的task,每一个睡眠队列上的节点都拥有一个 callback,wakeup逻辑在唤醒睡眠队列时,会遍历

大数据架构之:Spark

Spark是UC Berkeley AMP 实验室基于map reduce算法实现的分布式计算框架,输出和结果保存在内存中,不需要频繁读写HDFS,数据处理效率更高Spark适用于近线或准实时.数据挖掘与机器学习应用场景 Spark和Hadoop Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右. Spark是hadoop的升级版本,Hadoop作为第一代产品使用HDFS,第二代加入了Cache来保存中间计算结果,并能适时主动推Map/Reduce

大数据经典学习路线(及供参考)

http://blog.csdn.net/yuexianchang/article/details/52468291 1.Linux基础和分布式集群技术 学完此阶段可掌握的核心能力: 熟练使用linux,熟练安装Linux上的软件,了解熟悉负载均衡.高可靠等集群相关概念,搭建互联网高并发.高可靠的服务架构: 学完此阶段可解决的现实问题: 搭建负载均衡.高可靠的服务器集群,可以增大网站的并发访问量,保证服务不间断地对外服务: 学完此阶段可拥有的市场价值: 具备初级程序员必要具备的Linux服务器运