PowerDraw posiada własne narzędzia do obsługi klawiatury, joysticka oraz myszy.
Nazywa się PowerInput. Umożliwia lepszą kontrolę tych urządzeń niż DXInput czy zwykłe funkcje Delphi. Komponent PowerInput możemy przeciągnąć z palety PowerDraw lub utworzyć dynamicznie w ten oto sposób:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var Obsluga : TPowerInput; ... Obsluga := TPowerInput.Create(Form1); Obsluga.DoKeyboard := True; Obsluga.DoMouse := True; Obsluga.DoJoystick := True; Obsluga.Initialize; ... |
Ustawienie wartości DoKeybord na True włącza obsługę klawiatury.
Ustawienie wartości DoMouse na True włącza obsługę myszy.
Ustawienie wartości DoJoystick na True włącza obsługę joysticka.
Aby odświezyć listę wciśniętych klawiszy musimy użyć polecenia :
1 |
Obsluga.Update; |
Umieszczamy je w TimerPower1.OnRender lub w innej procedurze, która jest wywoływana co każdą klatkę gry.
1. Klawiatura
Procedura sprawdzająca, czy dany klawisz został wciśnięty :
1 2 3 4 5 |
if Obsluga.Keys[Numer_Klawisza] then ... |
PowerDraw posiada własną numerację klawiszy. Oto ona :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
Numer klawisza Klawisz 1 Escape 2..10 1..9 11 0 12 - 13 = 14 Backspace 15 Tab 16 Q 17 W 18 E 19 R 20 T 21 Y 22 U 23 I 24 O 25 P 26 [ 27 ] 28 Enter 29 Lewy Ctrl 30 A 31 S 32 D 33 F 34 G 35 H 36 J 37 K 38 L 39 ; 40 ´ 41 ` 42 Lewy Shift 43 44 Z 45 X 46 C 47 V 48 B 49 N Numer klawisza Klawisz 50 M 51 , 52 . 53 / 54 Prawy Shift 55 * 56 Lewy Alt 57 Space 58 Caps Lock 59..68 F1...F12 69 Num Lock 70 Scroll Lock 71..73 num 7, 8, 9 74 num - 75..77 num 4, 5, 6 78 num + 79..81 num 1, 2, 3 82 num 0 83 num , 87, 88 F11, F12 156 num Enter 157 Prawy Ctrl 181 Num / 183 Print Screen 197 Pause 199 Home 200 Strzałka w górę 201 Page Up 203 Strzałka w lewo 205 Strzałka w prawo 207 End 208 Strzałka w dół 209 Page Down 210 Insert 211 Delete 219 Lewy Win 220 Prawy Win 221 Menu 222 Power 223 Sleep 227 System Wake |
Nazwa danego klawisza możemy odczytać poleceniem :
1 |
Label1.caption := Obsluga.KeyName[NumerKlawisza]; |
2. Mysz
PowerInput sprawdza wyłącznie o ile pikseli przesunął się kursor. Uzyskać pozycję kursora możemy w następujący sposób :
1 2 3 4 5 6 7 8 9 |
var MyszX, MyszY : integer; ... Inc(MyszX, Obsluga.mDeltaX); Inc(MyszY, Obsluga.mDeltaY); ... |
Mamy pozycję kursora, teraz przyciski:
1 2 3 |
if (PowerInput.mbPressed[NumerPrzycisku] > 0) then ... |
NumerPrzycisku stanowią liczby od 0 do 7 (0 – lewy przycisk, 1 – prawy przycisk,… itd.)
3. Joystick
Pozycję wyznaczoną przez joystick odczytamy w ten sposób :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var Xpos, Ypos : Integer; ... Xpos:= Obsluga.Joystick[0].DIJoyState2.lX; Ypos:= Obsluga.Joystick[0].DIJoyState2.lY; Xpos:= Round((Xpos * 320) / High(SmallInt)) + 320; Ypos:= Round((Ypos * 240) / High(SmallInt)) + 240; ... |
Wciśnięcie klawisza odczytamy :
1 |
if (Obsluga.Joystick[0].DIJoyState2.rgbButtons[k] <> 0) then |
k to numer klawisza.