Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX -> TObjekt und DXDraw1MouseDown -> Fehler!!! (https://www.delphipraxis.net/17442-delphix-tobjekt-und-dxdraw1mousedown-fehler.html)

ISAS 5. Mär 2004 17:28


DelphiX -> TObjekt und DXDraw1MouseDown -> Fehler!!!
 
Wie gesagt habe ich ein Problem mit TPushable und DXDraw1MouseDown:

Zuerst mal TPushable:

Delphi-Quellcode:
  TPushable = class(TImageSprite)
  Public
    Constructor Create(aparent:Tsprite);override;
    Procedure DoMove(MoveCount: Integer);override;
  end;

var
  Pushable:TPushable;
Delphi-Quellcode:
constructor TPushable.Create(AParent: TSprite );
begin
  inherited Create(AParent);
  Image:=Form1.DXImageList1.Items[16];
  Width := Image.Width;
  Height := Image. Height;
  {X:=180;
  Y:=160;}  //Koordinaten werden später zugeordnet
end;

{OnCreate}
Delphi-Quellcode:
  With TPushable.Create(DXSpriteEngine1.Engine) do
  Begin
  if typ=11 then begin
    Image:=Form1.DXImageList1.Items[16];
    X:=strtoint(t)*32-32;
    Y:=strtoint(s)*32-32;
  end;
  end;
Hier wurden nun alle TPushable-Objekte erstellt. Es gibt mehrere davon, haben aber alle dieselben Eigenschaften.

Delphi-Quellcode:
procedure TForm1.DXDraw1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin

if (Player.X>=Pushable.X-32) and (Player.X<=Pushable.X+32) then begin...
Und hier ist nun mein Problem. Da Pushable mehrere Bilder hat und so auch mehrere X und Y Kordinaten, gibt es einen Fehler bei Pushable.X

Ich will nun, dass der folgende Befehl nur mit dem Pushable ausgeführt wird, auf den man auch klickt. Trotzdem soll es mehrere Objekte vom typ TPushable geben, da ja mehrere dieselben Eigenschaften haben, aber unterschiedliche Koordinaten.

Danke, ISAS! :wink:

ISAS 5. Mär 2004 19:14

Re: DelphiX -> TObjekt und DXDraw1MouseDown -> Fehler!
 
PS: Habs auch schon mit einem dynamischen array versucht:

Delphi-Quellcode:
  TPushable = class(TImageSprite)
  Public
    Constructor Create(aparent:Tsprite);override;
  end;

var
  Form1: TForm1;
   Pushable:array of TPushable;
implementation

{$R *.DFM}

constructor TPushable.Create(AParent: TSprite );
begin
  inherited Create(AParent);
  Image:=Form1.DXImageList1.Items[0];
  Width := Image.Width;
  Height := Image. Height;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
SetLength(Pushable,3);
for i:= 0 to 2 do begin
 With TPushable.Create(DXSpriteEngine1.Engine) do
  Begin
   Pushable[i] := TPushable.Create( DXSpriteEngine1.Engine );
    X:=i*32;
    Y:=i*32;
    end;
  end;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
 dxspriteengine1.Move(1);
 dxspriteengine1.Dead;
 dxspriteengine1.Draw;
 DXdraw1.Flip;
end;


procedure TForm1.DXDraw1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var i:integer;
begin
for i:= 0 to 2 do begin
if (X>Pushable[i].X) and (X<Pushable[i].X+32) then begin
if (Y>Pushable[i].Y) and (Y<Pushable[i].Y+32) then begin
showmessage(floattostr(Pushable[i].X));
end;
end;
end;
end;

end.
Aber er hat mir als Pushable[i].Y jedesmal (3mal) den Wert 0 zurückgegeben

ISAS 8. Mär 2004 19:23

Re: DelphiX -> TObjekt und DXDraw1MouseDown -> Fehler!
 
Hab nun versucht, ein Sprite zu der "Maus" machen. Halt so, das Der Sprite die X und Y Koordinaten der Maus hat und dann mit if (Sprite = Maus) then begin (Sprite = TPushable) weiterzumachen. Aber das mit der Maus funktioniert nicht. Es kommt immer wieder der gleiche Fehler. Könnte ich die Maus nicht mit DXInput machen. Bei mir is sie nämlich OnMouseDown. Schade, dass mir noch keiner Helfen konnte. Wenn der Quellcode erforderlich ist, dann poste ich ihn sicher, aber ich glaube eher nicht.

Danke, ISAS!

ISAS 9. Mär 2004 10:16

Re: DelphiX -> TObjekt und DXDraw1MouseDown -> Fehler!
 
Wenn man das so liest, dann könnte man denken, ich beschäftige mich mit diesem Thread selber :( . Ist nicht im negativen Sinn gemeint :wink: , weil ich ja Antwortmöglichkeiten geschildert und ausgeführt habe, die LEIDER zu KEINem ERFOLG geführt haben.

Hab viele Sachen versucht, doch nichts hat funktioniert. Das Problem liegt sicher darin, dass ich mehrere TPushables kreiere. :idea:

Versuche das nun so, indem ich eine DoCollision in TPushable zufüge und mich dann ein bisschen mit den Mauskoordinaten spiele. Hoffe, dass das nun funktioniert.

Wenn ich das nun versucht habe, dann berichte ich nochmal und natürlich freue ich mich auch auf Lösungsvorschläge. :coder:

Thnx, ISAS!

ISAS 10. Mär 2004 11:30

Re: DelphiX -> TObjekt und DXDraw1MouseDown -> Fehler!
 
Habs!!! :wink: :coder: :hello: :spin2: :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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