![]() |
DelphiX - Beim klick auf DXDraw soll das Sprite erkannt werd
Hi,
wie bekomm ich es hin, wenn man auf ein Sprite klickt, dass es erkannt wird und ein Text ausgegeben wird. Ich stell mir das mal so vor:
Delphi-Quellcode:
Das Problem ist nur, ich weiß nicht wie ich bestimme auf welches sprite ich geklickt habe.
if sprite is TGegenstand then ShowMessage('Das ist ein Gegenstand');
|
Re: DelphiX - Beim klick auf DXDraw soll das Sprite erkannt
Benutz als Mauszeiger auch ein Sprite
und dann benutz die Kollisionsabfrage. |
Re: DelphiX - Beim klick auf DXDraw soll das Sprite erkannt
Hi,
gibts da keine bessere lösung? Werd mir deine auf jedenfall mal anschauen^^. [edit] Ausserdem soll etwas ja erst beim klicken angezeigt werden, nicht wenn der Mauszeiger drüber ist ;) [/edit] |
Re: DelphiX - Beim klick auf DXDraw soll das Sprite erkannt
:?: Wo ist das Problem? Bei der Kollision immer das aktuell kollidierende Sprite merken, und halt erst OnClick reagieren.
Nicht ganz so elegant wäre eine Lösung über die Mauskoordinaten. Dann kennst du ja auch die Sprite-Koords, und kannst z.B. das Rechteck um das Sprite als gültig an sehen, und darauf hin die Koordinaten untersuchen. Aber mit der Kollision das klingt für mich erstmal recht gut :) (Hab aber, das muss ich zugeben, noch nix wirklich mit DirectX gemacht...) gruss, dizzy |
Re: DelphiX - Beim klick auf DXDraw soll das Sprite erkannt
Nunja, ich guck mal was sich machen lässt ;)
|
Re: DelphiX - Beim klick auf DXDraw soll das Sprite erkannt
Hi,
habs grad so probiert und es auch einigermaßen hinbekommen. Aber die möglich gefällt mir gar nicht. Es MUSS doch noch eine andere möglichkeit geben oder? |
Re: DelphiX - Beim klick auf DXDraw soll das Sprite erkannt
Hi,
hab die andere möglichkeit gefunden:
Delphi-Quellcode:
Im OnMouseDown event!
var
Sprite: TSprite; begin Sprite := SpriteEngine.Engine.GetSpriteAt(X, Y); if Sprite is TGold then mmInfo.Text := TGold(Sprite).GetInfoText else if Sprite is TWasser then mmInfo.Text := TWasser(Sprite).GetInfoText else mmInfo.Text := ''; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:19 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