前端之家收集整理的这篇文章主要介绍了
cocos 全局定时器,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#pragma once
#include "CommonHead.h"
/**
* 全局定时器
*/
class GlobalSchedule : public TObject {
public:
// 开始全局定时器 fInterval: 时间间隔 ; fDelay: 延迟运行
static void start(float fInterval = 0.0f);
// 停止全局定时器
static void stop();
// 全局定时器暂停
static void pause();
// 全局定时器暂停恢复
static void resume();
// 全局定时器主逻辑实现
void globalUpdate(float dt);
// 如果是每一帧实现的话
void update(float dt);
private:
GlobalSchedule(float fInterval);
~GlobalSchedule();
static GlobalSchedule* m_pSchedule;
};
GlobalSchedule* GlobalSchedule::m_pSchedule = nullptr;
GlobalSchedule::GlobalSchedule(float fInterval) {
CCAssert(!m_pSchedule,"以定义,不能重复定义");
//SCHEDULE->schedule(
// schedule_selector(GlobalSchedule::globalUpdate),// this,fInterval,false);
g_pDirector->getScheduler()->scheduleUpdateForTarget(this,false);
m_pSchedule = this;
}
GlobalSchedule::~GlobalSchedule() {
//g_pDirector->getScheduler()->unscheduleSelector(
//schedule_selector(GlobalSchedule::globalUpdate),this);
g_pDirector->getScheduler()->unscheduleAllForTarget(this);
}
void GlobalSchedule::globalUpdate(float dt)
{
// 这里写全局定时器的逻辑处理代码
//CCLOG("global globalUpdate");
}
void GlobalSchedule::update(float dt)
{
// 这里写全局定时器的逻辑处理代码
//CCLOG("global update %.4f",dt);
}
void GlobalSchedule::start(float fInterval) {
new GlobalSchedule(fInterval);
}
void GlobalSchedule::stop() {
CCAssert(m_pSchedule,"未定义");
CC_SAFE_DELETE(m_pSchedule);
}
void GlobalSchedule::pause() {
CCAssert(m_pSchedule,"为定义");
g_pDirector->getScheduler()->pauseTarget(m_pSchedule);
}
void GlobalSchedule::resume() {
CCAssert(m_pSchedule," 未定义");
g_pDirector->getScheduler()->resuMetarget(m_pSchedule);
}