2016-11-08 5 views
1

私は簡単なUIを作成しようとしています。空のパネルを作成して表示することはできますが、TextAreaOverlayElementを作成しようとするとランタイムエラーが発生します。Ogre:シンプルなテキストを作成する際の問題ui

エラー:OGRE例外< 5:ItemIdentityException>:OverlayManagerにおける要素型のTextViewのための工場を見つけることができません:: .......... \コンポーネント\オーバーレイ\ SRC \ OgreOverlayManager.cpp

でcreateOverlayElement

これは私が作成したコードです:

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(); 

誰もがこのまたは私はそれを本当に感謝の回避策を引き起こしている可能性があります知っている場合は!私は机に向かって頭を叩いて、これを理解しようとしています!

答えて

0

このエラーは、「TextView」のようなオーバーレイ要素ファクトリを見つけることができないことを示しています。絶対に本当です

(あなたは1を定義していない限り)

See reference manual of 1.9)を以下のようにcreateOverlayElementのシグネチャは次のとおりです。

OverlayElement* Ogre::OverlayManager::createOverlayElement(
    const String& typeName, 
    const String &instanceName, 
    bool isTemplate = false 
) 

したがって、あなたがオーバーレイ要素タイプを定義する必要があります最初の場所とあなたの選んだ名前を秒です。

は、あなたのケースのために次のことを試してみてください。

Ogre::TextAreaOverlayElement* text = 
    static_cast<Ogre::TextAreaOverlayElement*>(
    overlayManager.createOverlayElement("TextArea", "TextView")); 

また、あなたのpanelにごtextを追加するために欠場します。電話

panel->addChild(text); 
関連する問題