c++写的通用计时器工具

本文介绍了一个使用C++编写的通用计时器工具,该工具通过记录开始时间和帧检测,达到延迟执行回调函数的效果。借助std::function和std::bind,实现灵活的回调绑定,无需回调函数继承特定类。计时器在游戏每帧更新时调用,确保所有回调在主线程中执行,简化了线程同步问题,并展示了std::function的强大功能。
摘要由CSDN通过智能技术生成

先上代码,本身没有任何高科技的东西,不过很好用和方便。

#pragma once

#include "CommandQueue.h"
#include "GlobalFunction.h"

//
// 计时器回调函数.
//
typedef function<void(int)> TimerCallback;

class Timer
{
public:
	Timer(int timerId, int ms, bool isLoop, const TimerCallback& func);
	virtual ~Timer() {};
	int getId() const
	{
		return m_timerId;
	}
	
	// return true if need remove
	bool process();
private:
	int m_timerId;
	bool m_isLoop;
	unsigned int m_startTime;
	unsigned int m_delayTime;
	TimerCallback m_function;
};

#ifdef USE_FOR_COCOS2D
class TimerObject : public Timer
{
public:
	TimerObject(int timerId, int ms, bool isLoop, const TimerCallback& func, CCObject* target);
	virtual ~TimerObject();
private:
	CCObject* m_target;
};
#endif

class TimerMgr : public MySingleton<TimerMgr>
{
public:
	TimerMgr() 
	{
		m_currentTimerId = 0;
	};

	~TimerMgr() {};

	int addTimer(int ms, bool loop, TimerCallback func)
	{
		Ti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值