我正在努力在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
答案 0 :(得分:0)
该片段只有一个补丁。 {(1}}未在main()中声明。看看http://irrlicht.sourceforge.net/docu/example004.html处的“完整”示例。您的代码缺少某些内容(来自上面链接中的示例):
receiver