Cocos2d-x Schedule定時(shí)器的使用實(shí)例
schedule可以實(shí)現(xiàn)定時(shí)器的功能,就是每隔一段時(shí)間做什么事情,schedule的調(diào)用者是節(jié)點(diǎn),所有的節(jié)點(diǎn)都可以調(diào)用schedule函數(shù),參數(shù)需要傳入一個(gè)函數(shù)(schedule_selector一個(gè)新的選擇器),在函數(shù)中可以完成碰撞檢測等功能。下面就具體來看看這個(gè)函數(shù)的用法吧。




bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
//schedule傳入一個(gè)參數(shù)的時(shí)候每一幀都會(huì)調(diào)用show函數(shù)
//this->schedule(schedule_selector(HelloWorld::show));
//以下的schedule方法中,傳入的第二個(gè)參數(shù)是時(shí)間,代表多長時(shí)間調(diào)用一次show函數(shù)
//this->schedule(schedule_selector(HelloWorld::show),1.0);
//schedule方法中的前倆個(gè)參數(shù)和上邊的相同,第三個(gè)參數(shù)是方法調(diào)用的重復(fù)次數(shù),重復(fù)倆次加剛開始的一次
//總共調(diào)用了三次,3.0代表執(zhí)行下邊的語句后多長時(shí)間開始調(diào)用函數(shù)show,就是delay的時(shí)間
//this->schedule(schedule_selector(HelloWorld::show),1.0,2,3.0);
//scheduleUpdate每隔一幀都會(huì)調(diào)用update方法,需要我們聲明一下update方法
this->scheduleUpdate();
bRet = true;
} while (0);
return bRet;
}
void HelloWorld::update(float dt)
{
static int i = 0;
if(i == 100)
{
//下次不再調(diào)用update方法,但是CCLog函數(shù)還是會(huì)執(zhí)行的。
//this->unscheduleUpdate();
//以下函數(shù)實(shí)現(xiàn)相同的功能,它會(huì)將這個(gè)層的所以schedule方法都停止調(diào)用
this->unscheduleAllSelectors();
}
CCLog("i = %d",++i);
}
//show函數(shù)必須含有一個(gè)float類型的參數(shù)
void HelloWorld::show(float dt)
{
static int i = 0;
CCLog("time = %d",++i);
if(i == 10)
{
//unschedule停止傳入的參數(shù)代表的方法調(diào)用
//以下代碼不一定需要寫在這個(gè)show方法中
this->unschedule(schedule_selector(HelloWorld::show));
}
}
相關(guān)文章
C++時(shí)間戳轉(zhuǎn)化操作實(shí)例分析【涉及GMT與CST時(shí)區(qū)轉(zhuǎn)化】
這篇文章主要介紹了C++時(shí)間戳轉(zhuǎn)化操作,結(jié)合實(shí)例形式分析了C++時(shí)間戳轉(zhuǎn)換與顯示操作的原理與具體實(shí)現(xiàn)技巧,涉及GMT與CST時(shí)區(qū)轉(zhuǎn)化,需要的朋友可以參考下2017-05-05
C++實(shí)現(xiàn)動(dòng)態(tài)順序表(vector)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)動(dòng)態(tài)順序表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
C++實(shí)現(xiàn)LeetCode(119.楊輝三角之二)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(119.楊輝三角之二),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

