CEGUI教程 - 图文(8)

2020-02-21 13:43

// NB using buffered input

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

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

mMouse->setEventCallback( this ); mKeyboard->setEventCallback( 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); }

bool mouseMoved( const OIS::MouseEvent &e ) {

using namespace OIS;

CEGUI::System::getSingleton().injectMouseMove(e.state.X.rel,e.state.Y.rel); return true; }

bool mousePressed (const OIS::MouseEvent &e, OIS::MouseButtonID id) {

CEGUI::System::getSingleton().injectMouseButtonDown(convertOgreButtonToCegui(id)); return true; }

bool mouseReleased( const OIS::MouseEvent &e, OIS::MouseButtonID id ) {

CEGUI::System::getSingleton().injectMouseButtonUp(convertOgreButtonToCegui(id)); return true; }

bool keyPressed( const OIS::KeyEvent &e )

{

if(e.key == OIS::KC_ESCAPE) {

mShutdownRequested = true; return true; }

CEGUI::System::getSingleton().injectKeyDown(e.key); CEGUI::System::getSingleton().injectChar(e.text); return true; }

bool keyReleased( const OIS::KeyEvent &e ) {

CEGUI::System::getSingleton().injectKeyUp(e.key); return true; } };

在include语句后GuiFrameListener声明前添加下面代码

CEGUI::MouseButton convertOgreButtonToCegui(int buttonID) {

switch (buttonID) {

case MouseEvent::BUTTON0_MASK: return CEGUI::LeftButton;

case MouseEvent::BUTTON1_MASK: return CEGUI::RightButton; case MouseEvent::BUTTON2_MASK: return CEGUI::MiddleButton; case MouseEvent::BUTTON3_MASK: return CEGUI::X1Button; default:

return CEGUI::LeftButton; } }

Ogre 1.4.0

CEGUI::MouseButton convertOgreButtonToCegui(int buttonID) {

using namespace OIS; switch (buttonID) {

case OIS::MB_Left:

return CEGUI::LeftButton; case OIS::MB_Right:

return CEGUI::RightButton;

case OIS::MB_Middle:

return CEGUI::MiddleButton; default:

return CEGUI::LeftButton; } }

将下面语句添加到创建场景方法(createscene)的末尾。 setupEventHandlers();

现在你可以编译并执行程序了。实现效果是点击按钮后退出。

加载设置(Layout)

CEGUI使用XML格式来加载图形用户界面样式设置。复制下面xml代码到记事本,并将其以“Tutoral Gui.xml”命名另存在“\\media\\gui”文件夹下。


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

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

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

马上注册会员

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