青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Nebula3的Input系統(tǒng)

Posted on 2008-12-14 21:53 Condor 閱讀(1574) 評論(0)  編輯 收藏 引用

相對于其他的子系統(tǒng)來說, 輸入系統(tǒng)是比較簡單的. 很多游戲根本就沒有對這一塊進(jìn)行封裝, 而直接采用了Win32的消息機制.

不過經(jīng)過封裝的輸入系統(tǒng)使用起來很方便, 呵呵.

N3中有三種輸入設(shè)備, 鍵盤, 鼠標(biāo), 手柄. 分別是基于Win32消息, DirectInput, XInput實現(xiàn)的. 這里有一個繼承圖能夠很好的說明輸入系統(tǒng)的組織結(jié)構(gòu):

基本的消息處理機制是這樣的一個流程:

InputServer里有默認(rèn)的一個鍵盤, 一個鼠標(biāo), 一個手柄的"handler", 在每幀開始時InputServer會檢測當(dāng)前的輸入消息,  得到一個InputEvent, 由相應(yīng)的InputHandler來處理.  各個InputHandler都保存著當(dāng)前幀各種輸入狀態(tài)的緩存(如鼠標(biāo)左鍵是否按下), 因此, 在程序運行過程中, 我們只要在繪制結(jié)束前檢測各個InputHandler的狀態(tài)就相當(dāng)于知道當(dāng)前用戶是怎樣輸入的了.

一般只需要關(guān)心這么幾個函數(shù)就夠了:

  1. ////////////////////// Mouse////////////////////////////
  2. /// return true if button is currently pressed
  3. bool ButtonPressed(Input::MouseButton::Code btn) const;
  4. /// return true if button was down at least once in current frame
  5. bool ButtonDown(Input::MouseButton::Code btn) const;
  6. /// return true if button was up at least once in current frame
  7. bool ButtonUp(Input::MouseButton::Code btn) const;
  8. /// return true if a button has been double clicked
  9. bool ButtonDoubleClicked(Input::MouseButton::Code btn) const;
  10. /// return true if mouse wheel rotated forward
  11. bool WheelForward() const;
  12. /// return true if mouse wheel rotated backward
  13. bool WheelBackward() const;
  14. /// get current absolute mouse position (in pixels)
  15. const Math::float2& GetPixelPosition() const;
  16. /// get current screen space mouse position (0.0 .. 1.0)
  17. const Math::float2& GetScreenPosition() const;
  18. /// get mouse movement
  19. const Math::float2& GetMovement() const;
  1. //////////////////////Keyboard//////////////////////
  2. /// return true if a key is currently pressed
  3. bool KeyPressed(Input::Key::Code keyCode) const;
  4. /// return true if key was down at least once in current frame
  5. bool KeyDown(Input::Key::Code keyCode) const;
  6. /// return true if key was up at least once in current frame
  7. bool KeyUp(Input::Key::Code keyCode) const;
  8. /// get character input in current frame
  9. const Util::String& GetCharInput() const;

GamePad先略過, 原理相同

測試?yán)? 在上一次的代碼中添加一段:

  1. void OnRenderFrame()
  2.     {
  3. if (this->inputServer->GetDefaultMouse()->ButtonDown(MouseButton::LeftButton))
  4.         {
  5.             MessageBoxA(this->displayDevice->GetHwnd(), "Left Button Down", NULL, 0);
  6.         }
  7. //...//
  8.     }

效果:


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲久色影视| 尤物网精品视频| 99这里只有精品| 一区二区视频欧美| 激情欧美日韩| 亚洲免费小视频| 久久精品一区| 久久精品视频免费播放| 麻豆精品在线视频| 亚洲国产精品电影| 午夜激情一区| 久久精品99无色码中文字幕 | 国内揄拍国内精品久久| 国产一区二区毛片| 亚洲高清不卡在线观看| 亚洲性线免费观看视频成熟| 一区二区三区欧美成人| 欧美 日韩 国产在线| 夜夜嗨av一区二区三区中文字幕| 国产精品国产a级| 国产偷国产偷精品高清尤物| 欧美区一区二区三区| 欧美在线视频免费播放| 久久性色av| 国产精品欧美久久久久无广告| 欧美成人首页| 欧美午夜国产| 亚洲一区在线播放| 亚洲欧美日韩视频一区| 久久九九全国免费精品观看| 亚洲国产精品久久精品怡红院| 亚洲午夜一区二区| 免费影视亚洲| 欧美va亚洲va香蕉在线| 国产精品视频99| 国产精品久久网站| 欧美三级乱码| 欧美日本三级| 欧美国产日韩xxxxx| 欧美一区免费| 欧美亚洲视频在线看网址| 欧美理论大片| 亚洲美女黄色| 国产视频欧美视频| 99国产精品国产精品久久 | 亚洲精品一区二区三区婷婷月| 欧美影院在线| 中国亚洲黄色| 欧美日韩99| 欧美日韩一区二区三区视频| 黑人一区二区| 久久综合亚洲社区| 欧美成人国产| 亚洲电影av| 欧美一区在线直播| 国产欧美另类| 在线观看国产成人av片| 在线欧美一区| 久久精品国产999大香线蕉| 亚洲一区自拍| 久久免费黄色| 激情欧美日韩| 中文av字幕一区| 99re6热只有精品免费观看| 午夜国产欧美理论在线播放| 国产精品久久久对白| 亚洲精品国产精品国自产在线 | 亚洲精品乱码视频| 欧美精品久久久久久久久久| 亚洲毛片在线观看.| 亚洲欧洲日本在线| 欧美成人亚洲成人| 欧美不卡一卡二卡免费版| 欧美精品在线一区| 国产精品视频导航| 性一交一乱一区二区洋洋av| 久久综合一区| 欧美99久久| 国产欧美精品xxxx另类| 午夜视频一区| 久久久久国产精品一区| 亚洲精品中文字幕女同| 亚洲视频大全| 亚洲高清免费在线| 亚洲欧美日韩一区在线观看| 免播放器亚洲| 日韩午夜电影在线观看| 久久精品亚洲一区二区| 91久久在线播放| 亚洲一区二区av电影| 欧美激情一区二区三区在线视频观看| aⅴ色国产欧美| 欧美福利一区二区三区| 欧美日韩高清在线播放| 久久aⅴ国产欧美74aaa| av成人免费在线| 女同性一区二区三区人了人一| 国产欧美精品一区aⅴ影院| 欧美激情一区二区三区不卡| 一区二区高清| 在线播放日韩专区| 久久精品一区蜜桃臀影院| 老司机凹凸av亚洲导航| 亚洲一区二区视频在线| 久久综合久久美利坚合众国| 欧美精品一区二区视频 | 女同一区二区| 久久久久**毛片大全| 亚洲视频1区2区| 欧美日韩美女| 一区二区在线视频观看| 欧美亚洲尤物久久| 一本一本久久a久久精品综合麻豆| 国产深夜精品福利| 亚洲神马久久| 亚洲午夜久久久久久久久电影网| 狂野欧美激情性xxxx| 亚洲综合成人在线| 国产精品久久久久久久久婷婷| 亚洲欧美国产另类| 亚洲午夜久久久久久久久电影院| 国产在线高清精品| 亚洲一区视频在线| 亚洲欧美成人在线| 午夜精品理论片| 国产精品99久久久久久宅男| 免费h精品视频在线播放| 久热精品视频在线观看| 国产主播在线一区| 欧美亚洲免费| 久久精品五月| 亚洲午夜精品国产| 亚洲视频一区二区| 亚洲一区在线观看视频| 国产精品另类一区| 日韩亚洲欧美一区二区三区| 9国产精品视频| 欧美视频专区一二在线观看| 欧美一区二区精品在线| 欧美在线日韩精品| 亚洲精品偷拍| 一区二区三区不卡视频在线观看 | 亚洲综合成人在线| 久久精品国产一区二区三| 国产一区二区精品久久99| 久久精品亚洲乱码伦伦中文| 亚洲日本va午夜在线影院| 老司机午夜免费精品视频| 中文一区在线| 久久精品免费播放| 亚洲日韩欧美视频一区| 欧美精品日韩| 亚洲一区二区在线播放| 亚洲人www| 欧美精品在线观看91| 在线视频欧美日韩精品| 91久久久久久久久| 亚洲一区免费观看| 亚洲精品乱码久久久久| 亚洲免费在线视频一区 二区| 欧美一级在线视频| 亚洲盗摄视频| 欧美午夜精品久久久久久久| 欧美一区二区三区另类| 99pao成人国产永久免费视频| 欧美日韩福利| 久久狠狠亚洲综合| 亚洲美女黄色片| 久久欧美中文字幕| 国产精品自在线| 日韩亚洲欧美高清| 久久久青草青青国产亚洲免观| 亚洲精品久久久久| 国产亚洲人成网站在线观看| 欧美大片免费| 欧美一区二区三区电影在线观看| 亚洲国产天堂久久综合| 激情一区二区| 午夜精品久久久久久久蜜桃app| 免费在线观看成人av| 亚洲欧美日产图| 欧美日产国产成人免费图片| 亚洲宅男天堂在线观看无病毒| 亚洲大胆美女视频| 欧美资源在线观看| 国产亚洲人成网站在线观看| 亚洲精品在线视频| 久久久久久亚洲精品中文字幕| 亚洲靠逼com| 美女在线一区二区| 狼狼综合久久久久综合网 | 久久精品一二三区| 欧美在线一区二区三区| 国产精品久久久久影院亚瑟| 亚洲精品综合精品自拍| 99日韩精品| 亚洲国产视频一区| 激情综合色丁香一区二区| 国产精品一区二区三区免费观看| 欧美欧美在线|