Posted on 2008-05-23 20:02
RichardHe 阅读(178)
评论(0) 编辑 收藏 引用
OGRE的OIS系统:
这次仅举个Mouse系统,我也只是为了说明其中的原理而改;
class MouseEventListener
{
public:
void mouseMoved();
void mousePressed();
void mouseReleased()
};
class Mouse
{
public:
void register(MouseEventListener* listener){mListener = listener;}
void capture()
{
if (!mListener) return;
mListener->mouseMoved();
mListener-mousePressed();
mListener-mouseReleased();
}
protected:
MouseEventListener* mListener;
};
在ogre中,frameStarted接口中mMouse->capture();在此这前先注册这个监听器,不过它的名字
叫做mMouse->setEventCallback(this);所以mMouse->register(this)是一样的;因为capture是一直循环的,所以也是一直事件等待发生,
像程序的框架已经生成,一般的程序都会继承Public OIS::MouseListener,所以下面其中的方法也重载
bool mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id )
{
CEGUI::System::getSingleton().injectMouseButtonDown(convertOISMouseButtonToCegui(id));
return true;
}
其中可能说的不够很明白,有什么问题可以MSN或是给我留言...