不知所措的按键

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