cocos 全局定时器

前端之家收集整理的这篇文章主要介绍了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);
}

猜你在找的Cocos2d-x相关文章