OGF框架范例06 物件动作

OGF框架范例06 物件动作

        这个范例将会介绍OGF框架另一个扩展功能--物件动作引擎.作为一个游戏必然会涉及到一些对象动作,例如简单的直线移动,旋转,渐变等,高级的话,可能要做贝塞尔的曲线运动或作物理的惯性移动,物件动作引擎专门针对这些动作进行处理(随着推广和改进,相信会有你所需要的动作添加进来).看回一些新手写的程序,总会将这些处理写在渲染函数体内,控制物体位置的判断:switch,if语句占了N多行代码,为此想起写这么一个引擎,将这些动作的处理更为简单方便.例如你让指定物件从A坐标移动至B坐标,OGF会自动在另一线程中帮你处理,你的代码只需是告诉OGF要做什么动,目标是什么就可以了,具体看看下述的示例.

Sample06
简介:对象动作.
本范例会示范一个随机的直线运动.运行并点击"Start"按钮后,Sample05的时间计时器会随机在屏幕上移动,直至程序关闭.

1.添加time.h头文件引用,为随机函数而加载.在CMainSection构造函数中初始化随机种子
 srand( (unsigned)time( NULL ) );

2.重载CMainSection类的OnEventAction()方法,以实现动作执行结束后的回调处理.

3.在OnSectionIn()方法的返回前,加入以下代码:
 //指定移动的目标
 _POINT     Target;
 //随机生成目标坐标
 Target.x = rand()%800, Target.y = rand()%600;
 //创建一个移动的动作,并标识ID为1,动作执行5秒,从当前坐标移动至随机生成的坐标
 theGame->GetActionEngine()->CreateAction(pGameObject, Action_Move, 1, 5000, 1, (WPARAM)&Target);

4.在OnEventAction()事件加入以下代码:
 if(wActionID==1){
  //随机生成目标坐标
  _POINT     Target;
  Target.x = rand()%800, Target.y = rand()%600;
  //再次创建一个移动的动作
  theGame->GetActionEngine()->CreateAction(pIGameObject, Action_Move, 1, 5000, 1, (WPARAM)&Target);

 }
 return true;

5.编译并运行项目

你可能感兴趣的:(OGF框架范例06 物件动作)