Historique des modifications - Message

Message #3528

Sujet: VB 2005 et IEventReceiver


Type Date Auteur Contenu
Dernière modification 22-01-2008 00:38:57 Ravine
Enfin, derniere partie (je me méfie de la limite de caracteres des posts, me suis deja fait surprendre), le OnEvent est ce que l'on appelle un delegate. (ou délégué dans la langue de Moliere. Mais entre nous, qui dev en français ? big_smile ). Je te renvois ici pour la def du delegate http://en.wikipedia.org/wiki/Delegate_%28.NET%29

Concretement, comment ça fonctionne avec irrlicht.NetCP ? Tres simplement. Tout d'abord, on jette un coup d'oeil a ce qu'il se passe en terme d'interception d'events.

Tu lances ton programme.
Tu appuis sur Echap > ton device repere que tu viens d'appuyer sur Echap, et lance son "OnEvent" (device.OnEvent) . Comme toi tu veux pouvoir intervenir dans ce OnEvent, mais sans avoir a modifier le wrapper, tu ajoutes un delegate a la création du device

            device = new IrrlichtDevice(DriverType.Direct3D9, screenResolution, colorDepth, fullscreen, stencil, vsync, antialias);
            device.OnEvent += new OnEventDelegate(device_OnEvent);

là concretement, tu viens de rattacher la méthode "device_OnEvent()" a la methode "OnEvent" lancée par le device (si tu mates l'intellisense, OnEvent est de type OnEventDelegate, et sa doc dit "Fired when an event occured".). Ne reste plus qu'a implémenter plus loin ta méthode "device_OnEvent()"

        private bool device_OnEvent(Event e)
        {
            if (null != device)
            {
                #region Keyboard

                if (EventType.KeyInputEvent == e.Type)
                {
                    // key input processing by Mast
                    keyProcessor.OnEvent(e);

                    cameraSceneNode.OnEvent(keyProcessor, device.Timer.RealTime);

                    // insert big key code switch here
                    switch (keyProcessor.KeyCode)
                    {
                        case KeyCode.Escape:
                            {
                                device.Close()
                            }
                            break;

                        default:
                            break;
                    }
                }

                #endregion

            }
            return (true);
        }

et voilà. Tu interceptes les events de ton device, et tu peux meme faire mumuse avec. smile

Comme tu peux le voir dans le code au dessus, j'ai un cameraSceneNode.OnEvent(keyProcessor, device.Timer.RealTime);. C'est parce que dans ma Camera Custom, j'ai créé spécifiquement une méthode pour profiter du port du MastEventReceiver que j'avais fait.
Création du message 22-01-2008 00:35:39 Ravine
Enfin, derniere partie (je me méfie de la limite de caracteres des posts, me suis deja fait surprendre), le OnEvent est ce que l'on appelle un delegate. (ou délégué dans la langue de Moliere. Mais entre nous, qui dev en français ? big_smile ). Je te renvois ici pour la def du delegate http://en.wikipedia.org/wiki/Delegate_%28.NET%29

Concretement, comment ça fonctionne avec irrlicht.NetCP ? Tres simplement. Tout d'abord, on jette un coup d'oeil a ce qu'il se passe en terme d'interception d'events.

Tu lances ton programme.
Tu appuis sur Echap > ton device repere que tu viens d'appuyer sur Echap, et lance son "OnEvent" (device.OnEvent) . Comme toi tu veux pouvoir intervenir dans ce OnEvent, mais sans avoir a modifier le wrapper, tu ajoutes un delegate a la création du device

            device = new IrrlichtDevice(DriverType.Direct3D9, screenResolution, colorDepth, fullscreen, stencil, vsync, antialias);
            device.OnEvent += new OnEventDelegate(device_OnEvent);

là concretement, tu viens de rattacher la méthode "device_OnEvent()" a la methode "OnEvent" lancée par le device (si tu mates l'intellisense, OnEvent est de type OnEventDelegate, et sa doc dit "Fired when an event occured".). Ne reste plus qu'a implémenter plus loin ta méthode "device_OnEvent()"

        private bool device_OnEvent(Event e)
        {
            if (null != device)
            {
                #region Keyboard

                if (EventType.KeyInputEvent == e.Type)
                {
                    // key input processing by Mast
                    keyProcessor.OnEvent(e);

                    cameraSceneNode.OnEvent(keyProcessor, device.Timer.RealTime);

                    // insert big key code switch here
                    switch (keyProcessor.KeyCode)
                    {
                        case KeyCode.Escape:
                            {
                                device.Close()
                            }
                            break;

                        default:
                            break;
                    }
                }

                #endregion

            }
            return (true);
        }

et voilà. Tu interceptes les events de ton device, et tu peux meme faire mumuse avec. smile

Comme tu peux le voir dans le code au dessus, j'ai un cameraSceneNode.OnEvent(keyProcessor, device.Timer.RealTime);. C'est parce que dans ma Camera Custom, j'ai créé spécifiquement une méthode pour profiter du port du MastEventReceiver que j'avais fait.

Retour

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
153 invités en ligne
membre en ligne: -
RSS Feed