在基于OGRE的游戏系统中对定时事件的控制

在基于OGRE的游戏系统中对定时事件的控制

在游戏中,经常会遇到下面的一些事件,比如,我们要每隔3秒钟执行一个任务, 首先我们会想到利用这样的方式来实现.
在游戏渲染的每个循环中,增加时间变量的值,如果超过3秒,则执行某个函数,但是,这样有一个弊端,就是实现起来不太方便,
如果事件一多,或者要自定义任务执行的次数,就需要定义很多的变量.

因此,我们可以设计一个TimerManager类,在触发定时任务的地方都通过这个TimerManager类来处理.
下面给出利用我所写的TimerManager类来简单实现定时任务的方法.
1.给Ogre的root添加FrameListender

Ogre::Root *  root;
root
-> addFrameListener(TimerManager::getInstance());


2.首先我们定义任务函数 有两种定义方式,
一是定义为C类型的函数,二是静态C++类的静态方法.
函数如果是类的成员函数,那么必须定义为静态函数,

(注意函数的返回值和参数类型)

 

void  task
{
//do your task here
..
}


// or like this
class taskClass
{
public:
   static
void task();
}


void   taskClass::task()
{
  
//do your task here
  ..
}

3.在要触发定时任务的地方这样使用:

// 建立一个每3000ms执行一次的定时器
EventTimer *  t = TimerManager::getInstance() -> createEventTimer( 3000 );

// 定时器执行函数,task执行两次后TimerManager将删除该定时器
t -> setCallback(task, 2 );
t
-> setCallback(taskClass::task, 2 );

TimerManager的文件下载:
TimerManager.rar

你可能感兴趣的:(在基于OGRE的游戏系统中对定时事件的控制)