#0 

15-11-2006 06:03:23

Esselfe
Petit nouveau
Date d'inscription: 13-11-2006
Messages: 4
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:

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() */

Dernière modification par Esselfe (15-11-2006 16:41:18)


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

Hors ligne


#1 

15-11-2006 16:39:36

Esselfe
Petit nouveau
Date d'inscription: 13-11-2006
Messages: 4
Site web

j'ai trouvé...

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

Code:

            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


#2 

17-11-2006 10:31:12

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

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

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
73 invités en ligne
Aucun membre connecté
RSS Feed