Posted on 2008-05-23 20:02
RichardHe 閱讀(183)
評論(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或是給我留言...