Irrlicht Keypresses

Я изо всех сил пытаюсь запрограммировать нажатия клавиш в Irrlicht.

Я создал EventRecever как таковой:

class MyEventReceiver : public IEventReceiver
{
virtual bool OnEvent(const SEvent& event)
{
if (event.EventType == irr::EET_KEY_INPUT_EVENT)
{
KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;
{
if (event.EventType == irr::EET_KEY_INPUT_EVENT&&!event.KeyInput.PressedDown)
switch(event.KeyInput.Key)
{
case KEY_KEY_1:
case KEY_KEY_2:
case KEY_KEY_3:
}
return true;
}
}
return false;
}

virtual bool IsKeyDown(EKEY_CODE keyCode) const
{
return KeyIsDown[keyCode];
}

MyEventReceiver()
{
memset(KeyIsDown, false, sizeof(KeyIsDown));
}

private:
bool KeyIsDown[KEY_KEY_CODES_COUNT];
};

Это все, кажется, работает как таковое. Однако в рамках «while (device-> run ())» я реализовал:

if(receiver.IsKeyDown(irr::KEY_KEY_1))
{

}

на что я получаю ошибку для моего получателя «идентификатор получателя не определен». Во всех примерах, которые я вижу, я вижу эту переменную приемника без объявлений, и они утверждают, что она работает. Что я делаю неправильно?

Я строю на примере проекта «LoadIrrFile» (# 15).

В планах реализовать переключатель оружия на клавиши 1-3. я должен быть в состоянии получить код, как только я инициализировал нажатие клавиши.

Я использую фрагмент, который я нашел здесь: http://irrlicht.sourceforge.net/forum//viewtopic.php?p=143082

Вот полный сегмент кода, если требуется дополнительная информация: http://pastie.org/pastes/8620301/text

0

Решение

Во фрагменте есть только патч. receiver не объявлен в вашем main (). Посмотрите на «полный» пример на http://irrlicht.sourceforge.net/docu/example004.html. В вашем коде чего-то не хватает (из примера в ссылке выше):

MyEventReceiver receiver; // declare it
IrrlichtDevice* device = createDevice(driverType,
core::dimension2d<u32>(640, 480), 16, false, false, false, &receiver); // use it here
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector