日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


1 緩沖動(dòng)作

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

?

??? //看精靈的運(yùn)行速度

??? //man->runAction(in);

??? //man->runAction(out);

??? man->runAction(inOut);

?

??? addChild(man);

??? return true;

}

?

//原生繪圖,每一幀都會(huì)繪圖

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

}

運(yùn)行結(jié)果:

2 并行動(dòng)作和序列動(dòng)作

CCSequence 中持續(xù)時(shí)間為所有動(dòng)作累計(jì)的總合,CCSequence 中不可以

CCRepeatForever 動(dòng)作。

???CCSpwan中持續(xù)時(shí)間為并行動(dòng)作持續(xù)時(shí)間最長(zhǎng)的決定。

3 假動(dòng)作

???CCCallFunc系列動(dòng)作包括CCallFunc()CCCallFuncN()CCCallFuncND,以及CCCallFuncO四個(gè)動(dòng)作,CCCallFunc系列動(dòng)作的后綴”N”表示Node參數(shù),指的是執(zhí)行動(dòng)作的對(duì)象,”D”表示Data參數(shù),指的是用戶(hù)自定義的數(shù)據(jù),”O(jiān)”表示對(duì)象,指的是一個(gè)用戶(hù)自定義的CCObject參數(shù)。在不同的情況下,我們可以根據(jù)不同的需求來(lái)選擇不同的CCCallFunc動(dòng)作。

typedef void (CCObject::*SEL_CallFunc)();

//無(wú)參類(lèi)型

typedef void (CCObject::*SEL_CallFuncN)(CCNode*);

//傳遞CCNode * 類(lèi)型變量

typedef void (CCObject::*SEL_CallFuncND)(CCNode*, void*);

//傳遞CCNode * 類(lèi)型變量,和無(wú)類(lèi)型變量

typedef void (CCObject::*SEL_CallFuncO)(CCObject*);

//傳遞CCObject *類(lèi)型變量

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

案例說(shuō)明:

無(wú)參的假動(dòng)作

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

?

??? //無(wú)參的假動(dòng)作

??? void funcCallBack();

??? //帶調(diào)用者的假動(dòng)作

??? void funcNCallBack(CCNode * node);

??? //帶有調(diào)用者和數(shù)據(jù)的假動(dòng)作

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

??? //帶有對(duì)象的假動(dòng)作

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

??? //假動(dòng)作就是當(dāng)一個(gè)動(dòng)作執(zhí)行完了之后又執(zhí)行的一個(gè)動(dòng)作

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

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

?

??? man->runAction(seq);

??? addChild(man);

??? return true;

}

?

//原生繪圖,每一幀都會(huì)繪圖

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

}

?

//無(wú)參的假動(dòng)作

void T13Action::funcCallBack() {

??? CCLog("action is over");

}

運(yùn)行結(jié)果(運(yùn)行速度是變速的):

輸出結(jié)果:

4 假動(dòng)作

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

?

??? //無(wú)參的假動(dòng)作

??? void funcCallBack();

??? //帶調(diào)用者的假動(dòng)作

??? void funcNCallBack(CCNode * node);

??? //帶有調(diào)用者和數(shù)據(jù)的假動(dòng)作

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

??? //帶有對(duì)象的假動(dòng)作

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

?

?

??? //創(chuàng)建一個(gè)CCArray,在使用前調(diào)用retain(),要注意的是在最后退出之

??? //后要在onExit()中將array進(jìn)行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));

?

??? //調(diào)用

??? 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表示的是動(dòng)作的執(zhí)行者

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;

??? //下面是取出數(shù)據(jù)的代碼

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

??? //給精靈旋轉(zhuǎn)

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

}

?

void? T13Action::funcOCallBack(CCObject * obj)

{

??? CCArray * array = (CCArray*)obj;

??? //array中取出第0個(gè)元素

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

??? addChild(spr);

}

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的2假动作,数据缓冲,CCEaseExponential,CCEaseElastic,CCEaseBounce,CCCallFunc,funcNCallBack,funcNDCallBack,funcO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。