#1 

15-11-2006 05:03:23

Esselfe
Membres
Date d'inscription:
Messages: 4
IP: 65.92.194.74
Courriel  Site web

Salut,

C'est mon premier message ici, j'ai lu ici et là; il est génial Irrlicht smile

je viens de faire une surprise. Les boutons ne disparaissent pas toujours, et oui

J'ai démarré le débogueur mais je ne retrouve pas la trace de ce bug...


L'app démarre, le menu init, et quand j'appuis sur Options, le ligne contenu dans l'eventreceiver
pour le clik de ^options^ ne semble pas s'effectuer, ou le nouveau draw n'est pas complètement
modifié...

Voilà du code:

public void initApp(){
// (...)
            XCgui.initGUI_menu_elements();

            // la loop principale
            while (XCgame.device.Run() && !XCgame.appEnd)
            {
                if (XCgame.inMenu)
                {
                    // affichage menu
                    XCgame.videoDriver.BeginScene(true, false, XCgui.GUIBackColor);  // Zbuffer false car GUI == 2D
                    XCgui.guienv.DrawAll();
                    XCgame.videoDriver.EndScene();
                }
                else if (XCgame.inGame)
                {
                    // affichage jeu
                    XCgame.videoDriver.BeginScene(true, true, XCgame.GameBackColor);
                    XCgame.ingameText.Draw();
                    XCgame.device.SceneManager.DrawAll();
                    XCgame.videoDriver.EndScene();
                }
                else if (XCgame.inOptions)
                {
                    // affichage des options
                    XCgame.videoDriver.BeginScene(true, false, XCgui.GUIBackColor);
                    XCgui.guienv.DrawAll();
                    XCgame.videoDriver.EndScene();
                }
                else
                {
                    // juste au cas où l'on oubli de renverser les flags inMenu/inOptions  qqpart ^^
                    Console.WriteLine("la loop principale ne sait pas où se brancher. XCgame.inMenu = true;");
                    XCgame.inMenu = true;
                }
            }
}
static public bool OnEvent(Event ev){
           {...}
                    else if (ev.Caller.ID == (int)XCgui.GUIItems.PlaySingleXC)
                        {
                            Console.WriteLine("Vous voulez jouer.");
                            // enleve les boutons et met les flags d'aff au jeu
                            //XCgui.guienv.Dispose();  // on pourra le réinitialiser lorsque necessaire...
                            XCgui.disposeGUI_menu_elements();
                            XCgame.ingameText.Visible = true;
                            XCgame.inMenu = false;
                            XCgame.inOptions = false;
                            XCgame.inGame = true;
                            return false;
                        }
                    else if (ev.Caller.ID == (int)XCgui.GUIItems.Options)
                        {
                            Console.WriteLine("Vous allez dans les options.");
                            XCgui.XCLogo.Enabled = true;
                            XCgui.XCLogo.Visible = true;
                            XCgui.playSingleButton.Enabled = false;
                            XCgui.playSingleButton.Visible = false;
                            XCgui.playMultiButton.Enabled = false;
                            XCgui.playMultiButton.Visible = false;
                            XCgui.optionsButton.Enabled = false;
                            XCgui.optionsButton.Visible = false;
                            XCgui.exitButton.Enabled = false;
                            XCgui.exitButton.Visible = false;
                            XCgui.optionsDoneButton.Enabled = true;
                            XCgui.optionsDoneButton.Visible = true;
                            
                            XCgame.ingameText.Visible = false;
                            XCgame.inMenu = false;
                            XCgame.inGame = false;
                            XCgame.inOptions = true;
                            return false;
                        } // fin ev.Type == EventType.GUIEvent
            else if (ev.Type == EventType.KeyInputEvent && XCgame.inGame)
            {
                switch (ev.KeyCode)
                {
                    case KeyCode.Escape:
                        // enable the useful buttons...
                        XCgui.initGUI_menu_elements();
                        XCgame.ingameText.Visible = false;
                        XCgame.inGame = false;
                        XCgame.inOptions = false;
                        XCgame.inMenu = true;
                        return false;
                    default:
                        return false;
                }
            }
            return false;
        }  // fin device_OnEvent() */


*** Unissons-nous!; Des aliens pourraient venir!!! *** Irrlicht ressemble à un satellite de technologies! cool

Hors ligne


#2 

15-11-2006 15:39:36

Esselfe
Membres
Date d'inscription:
Messages: 4
IP: 70.48.95.166
Courriel  Site web

j'ai trouvé...

la méthode GUIEnvironment.Dispose() n'équivaut pas une méthode custom du genre:

            public static void disposeGUI_menu_elements(){
                Console.WriteLine("disposeGUI_menu_elements()");
                exitButton.Remove();
                optionsDoneButton.Remove();
                optionsButton.Remove();
                playMultiButton.Remove();
                playSingleButton.Remove();
                XCLogo.Remove();
                guienv = null;
            }

Maintenant cet appel est exécuté en allant vers le mode inGame... Dispose() sert à quoi?!
et initGUI_menu_elements() et appellé depuis l'event KEY_ESCAPE

depuis, pas de prob de déallocation/réallocation étranges smile


*** Unissons-nous!; Des aliens pourraient venir!!! *** Irrlicht ressemble à un satellite de technologies! cool

Hors ligne


#3 

17-11-2006 09:31:12

kedu
Modérateurs
Avatar de kedu
Date d'inscription:
Messages: 155
IP: 89.86.88.125
Courriel

Merci c'est bon à savoir ce genre de choses !


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
139 invités en ligne
membre en ligne: -
RSS Feed