C#對遊戲手柄的編程開發-API篇(1)

來源:互聯網
上載者:User

前段時間花38元從網上買了一對北通的USB遊戲手柄,這樣周末與晚上的休閑時間就可以玩玩孩兒時的 SFC與街機類比遊戲了。

某日在某個網站上玩一個Flash遊戲時,突然想到,如果也能使用手柄來玩Flash遊戲,那該多爽 。 但可惜的是,目前的Flash都是不支援對遊戲手柄進行編程,這不免是Flash中的一個遺憾。。

雖然Flash中不支援對遊戲手柄進行編程,但我們可以換種方法,做一個輔助程式(外掛? ) ,將手柄中的操作事件轉換為Flash中可接受的鍵盤與滑鼠操作事件,這樣不就可以使用遊戲手柄來玩 Flash遊戲了嗎?!於是,上網查了相關資料,但卻發現只有C++方面的案例,而C#一個也找不,這不打緊 ,自己動手,豐衣足食 。

(註:類似這樣的功能,網路已有現成的軟體,是一個日本人開發的,叫JoyToKey)

對遊戲手柄進行操作,大概有兩種方式:採用系統API或者使用DirectInput操作遊戲手柄裝置。(也 許還有其它方式,但我的知識範圍有限,其它方式就不得而知了)

採用系統API是一種最簡單的方式,因為系統已幫我們封裝好了所有細節,我們只要在程式中定時取得 遊戲手柄裝置的狀態就可以了(輪循)。

操作遊戲手柄(杆)的API有以下幾個:

函數名稱 函數說明
joyGetNumDevs 擷取當前系統支援的遊戲裝置數量
joyGetDevCaps 查詢擷取指定的遊戲杆裝置以確定其效能
joySetCapture 向系統申請捕獲某個遊戲裝置並定時將該裝置的狀態值通過訊息發送到某 個視窗
joyReleaseCapture 釋放對某個遊戲裝置的捕獲
joyGetPos 擷取遊戲裝置的座標位置和按鈕狀態
joyGetPosEx 擷取遊戲裝置的座標位置和按鈕狀態
joyGetThreshold 查詢指定的遊戲杆裝置的當前移動閾值
joySetThreshold 設定指定的遊戲杆裝置的移動閾值

其中,根據調用不同的方法又可分為兩種方式。

1)被動方式:

調用joySetCapture方法,向系統申請對某個遊戲手柄的捕捉,如果成功申請,系統將會定時將此遊戲 手柄的狀態資訊通過訊息方式通知到我們的某個視窗上。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.