首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ogre:创建简单文本ui的问题

Ogre:创建简单文本ui的问题
EN

Stack Overflow用户
提问于 2016-11-09 02:13:59
回答 1查看 412关注 0票数 1

我正在尝试做一个简单的用户界面上有一些文字。我可以创建一个空的面板并显示,但是当我尝试创建一个TextAreaOverlayElement时会出现运行时错误。

错误: OGRE EXCEPTIONS<5:ItemIdentityException>:在..........\Components\Overlay\src\OgreOverlayManager.cpp的OverlayManager::createOverlayElement中找不到元素类型TextView的工厂

这是我创建的代码:

代码语言:javascript
复制
Ogre::OverlaySystem* pOverlaySystem = new Ogre::OverlaySystem();
ogre_root_->getSceneManager("MySceneManager")->addRenderQueueListener(pOverlaySystem);

std::cout << "Into ui init" << std::endl;
Ogre::OverlayManager& overlayManager = Ogre::OverlayManager::getSingleton();
std::cout << "Got singleton" << std::endl;

     // Create an overlay
     Ogre::Overlay* overlay = overlayManager.create( "OverlayName" );

     // Create a panel
     Ogre::OverlayContainer* panel = static_cast<Ogre::OverlayContainer*>( overlayManager.createOverlayElement( "Panel", "PanelName" ) );
     panel->setPosition( 0.5, 0.5);
     panel->setDimensions( 0.1, 0.1 );
     panel->setMaterialName( "BaseWhite" );
     // Add the panel to the overlay
     //Breaks on next line
     Ogre::TextAreaOverlayElement* text = (Ogre::TextAreaOverlayElement*)((Ogre::OverlayContainer*)overlayManager.createOverlayElement("TextView", "TextArea"));

     overlay->add2D( panel );

     // Show the overlay
     overlay->show();

如果有人知道是什么原因导致这种情况或解决办法,我将非常感谢!我一直在用头撞桌子,试图弄清楚这件事!

EN

回答 1

Stack Overflow用户

发布于 2017-01-03 17:28:04

错误说明它找不到像"TextView“这样的覆盖元素工厂。

这是绝对正确的(除非你定义了一个)

createOverlayElement的签名如下(See reference manual of 1.9):

代码语言:javascript
复制
OverlayElement* Ogre::OverlayManager::createOverlayElement(
  const String& typeName, 
  const String &instanceName, 
  bool isTemplate = false
)

因此,您应该在第一个位置定义覆盖元素类型,并将您拾取的名称定义为第二个。

针对您的案例尝试以下方法:

代码语言:javascript
复制
Ogre::TextAreaOverlayElement* text = 
  static_cast<Ogre::TextAreaOverlayElement*>(
  overlayManager.createOverlayElement("TextArea", "TextView"));

此外,您还错过了将text添加到panel中。打电话

代码语言:javascript
复制
panel->addChild(text);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40493765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档