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

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...