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