08年05月23日

Posted on 2008-05-23 20:02 RichardHe 阅读(173) 评论(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或是给我留言...


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


posts - 94, comments - 138, trackbacks - 0, articles - 94

Copyright © RichardHe