Autor Beitrag
flaavia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105

WinXp Vista
D6 Ent, D2007 Ent
BeitragVerfasst: Do 11.12.03 16:26 
Hallo

Ich habe gerade "DelphiX für Delphi 6" in mein D6 Ent installiert (da ich mir davon verspreche, relativ einfach mehr als die nur 4 üblichen Buttons eines Gamepad abfragen zu können).

Bei dem mitgelieferten Beispiel zu DxInput (unten mit angegeben) funktioniert jetzt ausgerechnet die Buttonabfrage nicht (die x- und y Verschiebungen mit dem Joystick und über die Tastatur - (mit Drücken der Buchstaben H, J, K und L) - funktionieren; aber diese Funktionen brauche ich eigentlich gar nicht). Das Panel (Panel1.Color:= clFuchsia;) habe ich eingefügt, um durch die Farbänderung zu sehen, daß der Buttondruck erkannt wurde, da der im Beispiel vorgesehene Sound auch nicht abgespielt wird.

Weis jemand warum ich die Buttons (bzw. den Button 1 in diesem Sample) mit dem Code wie unten angegeben nicht abfragen kann :?: :?:

ausblenden volle Höhe Delphi-Quelltext
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:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DXInput, DXSounds, DXClass;

type
  TMainForm = class(TForm)
    DXInput1: TDXInput;
    Label1: TLabel;
    Label2: TLabel;
    AnalogMode: TCheckBox;
    POVLabel: TLabel;
    DXWaveList1: TDXWaveList;
    DXSound1: TDXSound;
    Label4: TLabel;
    Timer: TDXTimer;
    Panel1: TPanel;
    procedure TimerTimer(Sender: TObject; LagCount: Integer);
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.TimerTimer(Sender: TObject; LagCount: Integer);
begin
  DXInput1.Update;

  if AnalogMode.Checked and ((DXInput1.Joystick.X<>0) or (DXInput1.Joystick.Y<>0)) then
  begin
    {  Analog  }
    Label1.Left := Label1.Left + DXInput1.Joystick.X;
    Label1.Top := Label1.Top + DXInput1.Joystick.Y;
  end else
  begin
    {  Digital  }
    if isLeft in DXInput1.States then
      Label1.Left := Label1.Left - 10;

    if isRight in DXInput1.States then
      Label1.Left := Label1.Left + 10;

    if isUp in DXInput1.States then
      Label1.Top := Label1.Top - 10;

    if isDown in DXInput1.States then
      Label1.Top := Label1.Top + 10;
  end;

  
 if isButton1 in DXInput1.States then
  begin
    Panel1.Color:= clFuchsia;
    DXWaveList1.Items[0].Play(False);

    {  Next,  button 1 is invalidated until button 1 is pushed.  }
    DXInput1.States := DXInput1.States - [isButton1];
  end;
  POVLabel.Caption := Format('POV (Point of view): %d', [DXInput1.Joystick.Joystate.rgdwPOV[0]]);
end;

end.


Über Tips würde ich mich sehr freuen und bedanke mich schon im vorraus :?:


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
flaavia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 105

WinXp Vista
D6 Ent, D2007 Ent
BeitragVerfasst: Fr 12.12.03 22:33 
Hallo

auch über "kleine" Vermutungen würde ich mich sehr freuen.
:?: Oder ist das DelphiX wirklich so "schlecht", daß es niemand benutzt und deshalb keiner einen Rat weiß :?:

Was muss ich denn beachten, wenn ich DirectX nehme :?:

Es kann doch nicht so schwer sein, diese Buttons mit den Nummern > 4 zu benutzten - sicherlich bin ich einfach nur zu blöd - oder zu unerfahren, aber zur Zeit komme ich ohne rettenden Tip nicht weiter :autsch:

Falls noch jemand einen Vorschlag hat, der sich einfach umsetzten lässt, wäre das toll :!:

Vielen Dank in vorraus