0

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

4

1 に答える 1