不知所措的按键
Irrlicht Keypresses
本文关键字:不知所措 更新时间:2023-10-16
我正在努力在Irrlicht中编程按键。
我创建了一个这样的事件:
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
那里的
片段只有一个补丁。 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