我正努力在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
发布于 2014-01-10 12:27:01
那里的片段只有一个补丁。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 herehttps://stackoverflow.com/questions/21043000
复制相似问题