YuanCheng's Blog

C++博客 联系 聚合 管理
  1 Posts :: 5 Stories :: 0 Comments :: 0 Trackbacks

在游戏中,经常会遇到下面的一些事件,比如,我们要每隔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
posted on 2008-01-05 18:56 YuanCheng 阅读(562) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理