2016-11-08 4 views
1

나는 그것에 간단한 텍스트가있는 간단한 UI를 만들려고합니다. 빈 패널을 만들고 표시 할 수 있지만 TextAreaOverlayElement를 만들려고하면 런타임 오류가 발생합니다.오우거 : 간단한 텍스트를 만드는 문제 ui

오류 : 괴물의 예외 < 5 : ItemIdentityException> : 구성 요소 \ 오버레이 \ ..........에 OverlayManager의 요소 유형의 텍스트 뷰에 대한 공장 :: createOverlayElement를 찾을 수 없습니다 \ SRC \ OgreOverlayManager.cpp

이 내가 만든 코드입니다 :

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"와 같은 오버레이 요소 팩터 리를 찾을 수 없다고 말합니다.

(당신이 하나를 정의하지 않는 한) 절대 사실이다

createOverlayElement의 서명은 다음과 같습니다 (See reference manual of 1.9) : 따라서

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

, 당신은에 오버레이 요소를 유형을 정의해야합니다 첫 번째 장소와 선택한 이름을 두 번째로 표시합니다.

은 당신의 사건에 대해 다음보십시오 :

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

는 또한, 당신이 당신의 text 당신의 panel에 추가 그리워. 전화

panel->addChild(text);