CEGUI教程 - 图文(7)

2020-02-21 13:43

quitButton->setSize(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.1f)) ); 响应事件

将下面函数添加到TutorialApplication的public:中 void setupEventHandlers(void) {

CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();

wmgr.getWindow((CEGUI::utf8*)\:PushButton::EventClicked, CEGUI::Event::Subscriber

(&TutorialApplication::handleQuit, this)); }

bool handleQuit(const CEGUI::EventArgs& e) {

static_cast(mFrameListener)->requestShutdown();

return true; }

重写 GuiFrameListener 类来响应键盘和鼠标输入

class GuiFrameListener : public ExampleFrameListener, public MouseMotionListener, public MouseListener

{ private:

CEGUI::Renderer* mGUIRenderer; bool mShutdownRequested; public:

// NB using buffered input

GuiFrameListener(RenderWindow* win, Camera* cam, CEGUI::Renderer* renderer)

: ExampleFrameListener(win, cam, true, true), mGUIRenderer(renderer), mShutdownRequested(false) {

mEventProcessor->addMouseMotionListener(this); mEventProcessor->addMouseListener(this); mEventProcessor->addKeyListener(this); }

// Tell the frame listener to exit at the end of the next frame void requestShutdown(void) {

mShutdownRequested = true; }

bool frameEnded(const FrameEvent& evt)

{

if (mShutdownRequested) return false; else

return ExampleFrameListener::frameEnded(evt); }

void mouseMoved (MouseEvent *e) {

CEGUI::System::getSingleton().injectMouseMove( e->getRelX() * mGUIRenderer->getWidth(), e->getRelY() * mGUIRenderer->getHeight()); e->consume(); }

void mouseDragged (MouseEvent *e) {

mouseMoved(e); }

void mousePressed (MouseEvent *e) {

CEGUI::System::getSingleton().injectMouseButtonDown( convertOgreButtonToCegui(e->getButtonID())); e->consume();

}

void mouseReleased (MouseEvent *e) {

CEGUI::System::getSingleton().injectMouseButtonUp( convertOgreButtonToCegui(e->getButtonID())); e->consume(); }

void mouseClicked(MouseEvent* e) {} void mouseEntered(MouseEvent* e) {} void mouseExited(MouseEvent* e) {} void keyPressed(KeyEvent* e) {

if(e->getKey() == KC_ESCAPE) {

mShutdownRequested = true; e->consume(); return; }

CEGUI::System::getSingleton().injectKeyDown(e->getKey()); CEGUI::System::getSingleton().injectChar(e->getKeyChar()); e->consume(); }

void keyReleased(KeyEvent* e) {

CEGUI::System::getSingleton().injectKeyUp(e->getKey()); e->consume(); }

void keyClicked(KeyEvent* e) {

// Do nothing e->consume(); } };

Ogre 1.4.0

如果你使用的是Ogre 1.4.0 你将会要使用OIS。在Ogre3d中使用OIS的更多细节,请参阅使用OIS并且再看一看基础教程5:

class GuiFrameListener : public ExampleFrameListener, public OIS::MouseListener, public OIS::KeyListener { private:

CEGUI::Renderer* mGUIRenderer; bool mShutdownRequested; public:


CEGUI教程 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新人教版小学数学三年级上册分数的简单计算精品教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: