2014-01-10 20 views
0

我很努力在Irrlicht內編程按鍵。Irrlicht Keypresses

我已經創建了一個eventreciever這樣:

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]; 
}; 

這一切都似乎是工作本身。然而,內「而(裝置 - >運行())」我已經實現:

if(receiver.IsKeyDown(irr::KEY_KEY_1)) 
{ 

} 

,而我得到一個錯誤,我reciever「標識reciever是不確定的」。在我看到的所有例子中,我看到這個沒有聲明的接收變量,他們聲稱它是有效的。我究竟做錯了什麼?

我建立的示例項目 「LoadIrrFile」(#15)。

該計劃是爲1-3鍵實現武器開關。我應該能夠得到一次我有密鑰按下初始化的代碼。

我使用,我發現這裏的片段:http://irrlicht.sourceforge.net/forum//viewtopic.php?p=143082

下面是一個完整的代碼段,如果需要更多的信息:http://pastie.org/pastes/8620301/text

回答

0

的片段只有一個補丁。未在main()中聲明receiver。看看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 
+0

感謝。在你評論之前,管理從我知道的專業人士那裏獲得幫助。問題是固定的,等待下一個問題出現的時間:P – Rellac