Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Einfache DXInput Abfrage (https://www.delphipraxis.net/15488-einfache-dxinput-abfrage.html)

PhöniX 29. Jan 2004 17:13


Einfache DXInput Abfrage
 
So..noch ne Frage...
Gibt es eine einfache Abfrage der Tastatur mit DXInput, denn die beschriebene Möglichkeit bei Delphi-Traff ist mir zu kompliziert...Außerdem soll lediglich ein Bild bewegt werden und ein neues Bild geladen werden..und nicht irgendwas animiert werden :zwinker:
Es wäre schön wenn mir jemand den code posten könnte und an die stelle, an der die aktionen reinkommen einen kommentar sschreiben könnt z. B.:
Delphi-Quellcode:
//Aktionen
..
DANKE

citybreaker 29. Jan 2004 17:23

Re: Einfache DXInput Abfrage
 
Wenn du ein Sprite verwendest musst du folgendes machen.

Delphi-Quellcode:
type
 TPlayer = class(TImageSprite)
 private
 public
  procedure DoMove(MoveCount: Integer); override// Zeile erweitern
end;

.....


procedure TPlayer.DoMove(MoveCount: Integer);
begin
  if isLeft in Form1.DxInput1.States then
    Player.X := Player.X -3;
  if isRight in Form1.DxInput1.States then
    Player.X := Player.X +3;
end;

PhöniX 29. Jan 2004 20:48

Re: Einfache DXInput Abfrage
 
Zitat:

TPlayer.DoMove(MoveCount: Integer);
begin
if isLeft in Form1.DxInput1.States then
Player.X := Player.X -3;
if isRight in Form1.DxInput1.States then
Player.X := Player.X +3;
Wie kommst du jetzt auf nen Player?
Ich will einfach in ein Item ein anderes Bild laden?
Kann mir das jemand erklären?? :roteyes:

Seniman 29. Jan 2004 21:38

Re: Einfache DXInput Abfrage
 
Hallo PhöniX,

eines solltest du bedenken: Wenn du die DirectInput-Abfrage verwendest, wird nicht fest gestellt, wann die Taste gedrückt wird, sondern, ob sie unten oder oben ist. D.h. wenn du DirectInput benutzt wird das Laden des Bildes vermutlich einmal pro Frame ausgeführt. Also: Taste 1 Sekunde gedrück gehalten --> Bild wurde ca. 60 mal nachgeladen.
Wenn du ein Bild irgendwie schön fließend bewegen willst, dann mach es mit DirectInput. Dazu kannst du die von citybreaker angegebene Prozedur verwenden, wobei du allerdings die Zeile
Delphi-Quellcode:
Player.X := Player.X -3;
gegen das ersetzt, was eben passieren soll, wenn man die entsprechende Taste drückt.

Wenn du du dagegen bei einem Tastendruck nur einmal etwas ausführen lassen willst, dann benutzte die OnKeyDown-Prozedur der Form. (Siehe auch OH)

Grüße
Seniman

citybreaker 30. Jan 2004 13:34

Re: Einfache DXInput Abfrage
 
Du hast doch gesagt es soll ein Bild bewegt werden. Musste dich
demnächst was genauer ausdrücken. -.-''


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz