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
Le principe c'est de dérivé IEventReceiver puis d'implémenter OnEvent().
Dans MyEventReceiver.h :
class MyEventReceiver : public IEventReceiver { public: MyEventReceiver(); ~MyEventReceiver(); virtual bool OnEvent(const SEvent&); };
Dans MyEventReceiver.cpp
#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.
Hors ligne
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
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)
Hors ligne
Merci beaucoup johnplayer, je vais essayer.
Hors ligne