08年05月23日

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或是给我留言...

你可能感兴趣的:(08年05月23日)