線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1838
推到 Plurk!
推到 Facebook!

怎樣用DelphiX獲取手柄銨鈕狀態?

答題得分者是:Dracula
EidolonHelper
一般會員


發表:1
回覆:0
積分:0
註冊:2005-01-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-25 11:28:53 IP:222.84.xxx.xxx 未訂閱
(第一次發貼,發現好像不支持簡體中文的,衹好再改,Sorry) 當手柄上的Button1銨鈕一直接著時,下面的條件判斷就不停地通過,像連發一樣,我不想要連發,我想要單發,就是按一次後放開按鈕才算一次 procedure TFormDdiamond.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin ...... if (isUp in DXInput1.States) or (isButton1 in DXInput1.States) then if vAspect 1 <= 3 then Inc(vAspect) else vAspect := 0; ..... 我看過DirectInput的Drumpad範例,可以通過0x80來判斷的,源碼如下: .... for( j = 0; j < dwItems; j ) { // Non-axis data is recieved as "button pressed" or "button // released". Parse input as such. BOOL bState = (adod[j].dwData == 0x80 ) ? TRUE : FALSE; INT index = (INT) adod[j].uAppData; if( button_states[index] == FALSE && bState ) { g_lpDrumPad->Play(index, 0, 0); g_boxColors[index] = 255.0f; } button_states[index] = bState; } ... 請問DelphiX裡如何做? 發表人 - EidolonHelper 於 2005/03/25 11:47:20 發表人 - EidolonHelper 於 2005/03/25 12:00:32
Dracula
一般會員


發表:36
回覆:20
積分:21
註冊:2002-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-25 23:32:33 IP:220.138.xxx.xxx 未訂閱
DelphiX本身就有這個功能,不需要這麼麻煩 祇要加上這一列就可以了 DXInput1.States := DXInput1.States - [isRight];    例如:
if isRight in DXInput1.States then
begin
   Label1.Left := Label1.Left   10;
   DXInput1.States := DXInput1.States - [isRight];
end;
  
或者:
if (isUp in DXInput1.States) or (isButton1 in DXInput1.States) then
begin
   DXInput1.States := DXInput1.States - [isUp];
   DXInput1.States := DXInput1.States - [isButton1];
   ............
   ............
end;
  
系統時間:2017-12-12 14:24:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!