#1 

18-02-2008 13:25:58

Tank
Membres
Avatar de Tank
Date d'inscription:
Messages: 2
IP: 86.207.123.254
Courriel

Bonjour à tous !

J'ai un problème étrange... avec IEventReceiver, lorsque j'appuis sur un bouton du GUI, et qu'ensuite j'appuis sur une touche du clavier, cette touche est répétée 2 fois.

Voici mes classes :

class KeyEventReceiver : public IEventReceiver
{
	public:
		bool OnEvent(const SEvent &event)
		{
			if(event.EventType == EET_KEY_INPUT_EVENT && event.KeyInput.PressedDown)
			{
				std::cout << "key: " << event.KeyInput.Char << std::endl;
			}

			return false;
		}
};

class GuiEventReceiver : public IEventReceiver
{
	public:
		bool OnEvent(const SEvent &event)
		{
			if(event.EventType == EET_GUI_EVENT && event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED)
			{
				std::cout << "bouton: " << event.GUIEvent.Caller << std::endl;
			}

			return false;
		}
};

Et le main :

int main()
{
    // IEventReceiver
    KeyEventReceiver keyEvents;
    GuiEventReceiver GuiEvents;

    // creation de la fenetre
    IrrlichtDevice *device = createDevice(video::EDT_DIRECT3D9, core::dimension2d<s32>(110, 40), 32, false, false, true, &keyEvents);
    video::IVideoDriver *driver = device->getVideoDriver();
    gui::IGUIEnvironment *guienv = device->getGUIEnvironment();

    // ajout d'un bouton
    guienv->addButton(core::rect<s32>(10, 10, 100, 30), 0, 1, L"Bouton de test");

    // assigne le IEventReceiver perso au guienv
    guienv->setUserEventReceiver(&GuiEvents);

    // dessine
    while(device->run())
    {
    	driver->beginScene(true, true, video::SColor(0, 100, 100, 100));
    	guienv->drawAll();
    	driver->endScene();
    }

    device->drop();

    return 0;
}

De cette façon ça fonctionne, mais je ne comprend pas pourquoi avec un seul IEventReceiver ça ne marche pas.

Merci de votre aide smile


Hors ligne


#2 

18-02-2008 16:56:07

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 82.125.46.213
Courriel  Site web

Regarde le code du viewer fourni avec irrlicht, tu y trouveras tes réponses je pense.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

18-02-2008 19:04:55

bebe
Membres
Date d'inscription:
Messages: 18
IP: 79.82.226.92
Courriel

ou alors vas chercher ce que tu veux ici : http://irrlicht.sourceforge.net/phpBB2/ … hp?t=24508

prend le dernier code posté, c'est vraiment impec wink


Hors ligne


#4 

18-02-2008 20:51:25

Tank
Membres
Avatar de Tank
Date d'inscription:
Messages: 2
IP: 86.207.123.254
Courriel

ok merci bien.


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