#0 

26-06-2012 09:23:08

Corvet
Petit nouveau
Lieu: France, Grenoble
Date d'inscription: 01-07-2008
Messages: 7

Bonjour,

J'ai besoin d'aide pour mettre la gestion des événements de la demo d'Irrlicht dans un fichier avec une classe spécial.
Je n'y arrive pas. J'ai des problèmes de compilation du fait que la classe onevent est virtuel au départ.

Pourriez-vous m'aider s'il vous plaît ?

Merci d'avance pour votre aide.

Hors ligne


#1 

26-06-2012 13:32:13

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Le principe c'est de dérivé IEventReceiver puis d'implémenter OnEvent().

Dans MyEventReceiver.h :

Code:

class MyEventReceiver : public IEventReceiver
{
    public:
        MyEventReceiver();
        ~MyEventReceiver();

        virtual bool OnEvent(const SEvent&);
};

Dans MyEventReceiver.cpp

Code:

#include "MyEventReceiver.h"

MyEventReceiver::MyEventReceiver()
{
// constructeur
}

MyEventReceiver::~MyEventReceiver()
{
// destructeur
}

bool MyEventReceiver::OnEvent(const SEvent&);
{
    if (event.EventType == EET_KEY_INPUT_EVENT)
    {
        if(event.KeyInput.PressedDown)
        {
            if(event.KeyInput.Key == KEY_F4 )  // appui sur la touche "F4"
            {
                return true;                                // l'événement a été traité
            }
        }
    }
    return false; // aucun événement à été traité
}

Attention : OnEvent doit toujours renvoyer true lorsque tu as utilisé l'event, ainsi il retire l'event et passe au suivant.


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#2 

26-06-2012 14:04:25

Corvet
Petit nouveau
Lieu: France, Grenoble
Date d'inscription: 01-07-2008
Messages: 7

Merci beaucoup johnplayer d'avoir répondu.

Le problème c'est que je n'arrive pas à remplacer l'event receiver de la demo par le tien que je préfère nettement.

Quand je supprime l'event receiver de la demo, j'ai une erreur dans main.cpp qui me dit que CDemo est une classe abstraite.

Comment faire pour régler le problème s'il vous plaît ?

Hors ligne


#3 

26-06-2012 16:58:05

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

Pour la creation d'une instance :
MyEventReceiver receiver();

Pour le transmettre au device lorsqu'il est déjà créé :
device->setEventReceiver(&receiver);

ou à la création du device, tu mets &receiver pour le dernier argument de createDevice()
createDevice(     video::E_DRIVER_TYPE      deviceType = video::EDT_SOFTWARE,
        const core::dimension2d< u32 > &      windowSize = (core::dimension2d< u32 >(640, 480)),
        u32      bits = 16,
        bool      fullscreen = false,
        bool      stencilbuffer = false,
        bool      vsync = false,
        IEventReceiver *      receiver = 0)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


#4 

26-06-2012 17:15:25

Corvet
Petit nouveau
Lieu: France, Grenoble
Date d'inscription: 01-07-2008
Messages: 7

Merci beaucoup johnplayer, je vais essayer.

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
882 membres
1429 sujets
11119 messages
Dernier membre inscrit: LiseBuisson96
37 invités en ligne
Aucun membre connecté
RSS Feed