[Irrlicht-Engine (1.7.2)] pressen der Menü-Knöpfe wird ignoriert



  • bool ask(irr::IrrlichtDevice& device, std::wstring const& question, bool confirm = false)
    {
          gui::IGUIButton *YesButton = device.getGUIEnvironment()->addButton(core::rect<s32>(0, SCREEN_SIZE.Height / 2, SCREEN_SIZE.Width, SCREEN_SIZE.Height / 2 + 50),
                                                                             nullptr,
                                                                             -1,
                                                                             L"Yes"),
                          *NoButton = device.getGUIEnvironment()->addButton(core::rect<s32>(0, SCREEN_SIZE.Height / 2 + 51 , SCREEN_SIZE.Width, SCREEN_SIZE.Height / 2 + 101),
                                                                            nullptr,
                                                                            -1,
                                                                            (confirm)? L"Cancel" : L"No");
    
          gui::IGUIStaticText* Text = device.getGUIEnvironment()->addStaticText(question.c_str(),
                                                                                core::rect<s32>(0, SCREEN_SIZE.Height / 5, SCREEN_SIZE.Width, SCREEN_SIZE.Height / 2));
    
          Text->setTextAlignment(gui::EGUIA_CENTER, gui::EGUIA_CENTER);
    
          gui::IGUIImage* DBImage = getDarkBounceImage(*device.getGUIEnvironment());
    
          while(device.run())
                if(device.isWindowActive())
                {
                      device.getVideoDriver()->beginScene(true, false, video::SColor(255, 255, 255, 255));
    
                      DBImage->draw();
                      YesButton->draw();
                      NoButton->draw();
                      Text->draw();
    
                      if(YesButton->isPressed())
                            return true;
    
                      if(NoButton->isPressed())
                            return false;
    
                      device.getVideoDriver()->endScene();
                }
    
          return false;
    }
    

    Hi!

    Hier habe ich gerade eine Verzweiflungsphase mit einem scheinbar völlig korrektem Code, der aber komischerweise sozusagen einen Laufzeitfehler produziert. Ich vermute (weil ich einmal was beim Debuggen bemerkt habe), dass es bei der OnEvent Funktion der IGUIButtons liegt.

    Hatte jemand schon was ähnliches? Vielleicht ist es auch ein Engine-Bug... dann werde ich es in den irrlicht-foren posten.

    Zur Funktion: Sie "fragt" den Benutzer etwas, man übergibt das IrrlichtDevice und die Frage als unicode-string. Mehr interessantes ist da nicht, sieht mir ganz gut aus..

    Fehlerbeschreibung: Das "Pressen" der Knöpfe wird ignoriert. (Wieso?) Daher nehme ich an, dass das Event falsch verarbeitet wird..

    VD im Voraus,


Anmelden zum Antworten