Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TimageSprite und MousePosition (https://www.delphipraxis.net/7336-timagesprite-und-mouseposition.html)

Haegar 9. Aug 2003 17:16


TimageSprite und MousePosition
 
aloha,

ich wollt mal gern wissen, wie ich am besten überprüfe, ob ich mit meiner maus über einem sprite (auf Dxdraw) bin.
brauch das, damit ich beim plazieren von objekten nicht übereinander baue (das andere das sie sich schneiden aufgrund der größe mach ich auch noch).

ciao haegar

Flogo 15. Aug 2003 21:01

Re: TimageSprite und MousePosition
 
Ich hatte mal ein ähnliches Problem und habs umgangen indem ich den MAuszeiger ausgeblendet hab und stattdessen ein ImageSprite genommen hab. Das hatte für mich gleich zwei Vorteile: Ich konnte Kollisionen leichter feststellen und ich konnte eigene Mauszeiger leichter einbauen.
Wars überhaupt das was du gemeint hast? (was meinst du mit übereinanderbauen)

Haegar 15. Aug 2003 23:21

Re: TimageSprite und MousePosition
 
ja, die idee mit dem imagesprite (als ersatz für den mauszeiger WÄHREND des plazierens), hat nur irgendwie net geklappt, kannste mir da mal auf die sprünge helfen?
mit übereinanderbauen meine ich einfach nur, das sich die objekte nicht überschneiden sollen (is ein lvl-editor).


gruss haegar

Flogo 16. Aug 2003 13:24

Re: TimageSprite und MousePosition
 
Also bei mir siehts so aus:
Delphi-Quellcode:
type
  TCursorSprite = Class(TImageSprite)
    procedure DoCollision(Sprite:TSprite; var Done:Boolean); override;
    procedure DoMove(MoveCount: Integer); override;
  end;

//...

procedure TCursorSprite.DoCollision(Sprite:TSprite;var Done:Boolean);
begin
  inherited;
  if (Sprite is TItem) and Sprite.Visible then //statt TItem die Klasse deiner Levelbausteine
   //...
end;

procedure TCursorSprite.DoMove(MoveCount: Integer);
begin
  inherited;
  Collision;
end;

procedure TForm1.DXDrawMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  MouseCursor.x := X;
  MouseCursor.y := Y;
  MouseCursor.Collision;
end;
[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]

Haegar 16. Aug 2003 15:39

Re: TimageSprite und MousePosition
 
muss ich das dann irgendwie als varibale deklarieren??
oder is das bei dir:
Delphi-Quellcode:
var MouseCusor:TCursorSprite;

gruss haegar

Flogo 16. Aug 2003 17:39

Re: TimageSprite und MousePosition
 
Zitat:

Zitat von Haegar
oder is das bei dir:
Delphi-Quellcode:
var MouseCusor:TCursorSprite;

Ja so ähnlich siehts bei mir aus. Dann natürlich noch ein
Delphi-Quellcode:
MouseCursor := TCursorSprite.Create
und mit
Delphi-Quellcode:
MouseCursor.Image := DeinBild
Das Bild ändern

Flogo 21. Aug 2003 19:18

Re: TimageSprite und MousePosition
 
Die Methode von oben funktioniert bis jetzt einigermaßen aber sie liefert alle Kollisionen des Sprites das man als Mauszeiger benutzt (zum Bauen/Platzieren vielleicht ganz praktisch). Ich hätte bei mir jetzt aber gern die Kollision mit nur einem Punkt des Sprites eben so wie ein normaler Cursor nur auf einen Punkt reagiert. Dazu hab ich versucht Dem TCursorSprite Objekt noch ein TSprite als eigenschaft zu geben (1x1 Pixel, kein Bild) und davon die Kollisionen zu bestimmen. Die Kollisionen sind aber vollkommen an der falschen Stelle (links oberhalb der eigentlichen Kollision). Hat jemand eine Idee woran das liegen könnte oder weiß jemand wie man es besser machen kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.

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