怎樣用DelphiX獲取手柄銨鈕狀態? |
答題得分者是:Dracula
|
EidolonHelper
一般會員 ![]() ![]() 發表:1 回覆:0 積分:0 註冊:2005-01-15 發送簡訊給我 |
(第一次發貼,發現好像不支持簡體中文的,衹好再改,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 發送簡訊給我 |
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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |