AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [DELPHIX] Sprite erkennen, welches unter der Mouse ist...
Thema durchsuchen
Ansicht
Themen-Optionen

[DELPHIX] Sprite erkennen, welches unter der Mouse ist...

Ein Thema von Ricane · begonnen am 22. Dez 2004 · letzter Beitrag vom 23. Dez 2004
Antwort Antwort
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#1

[DELPHIX] Sprite erkennen, welches unter der Mouse ist...

  Alt 22. Dez 2004, 20:26
Moin,

ich versuche krampfhaft den Sprite zu erkennen, der gerade unter meiner Mouse ist! Der Sinn ist, das ich dem Sprite welches unter meiner Mouse ist ein neues Image geben will, wenn ich drauf klicke!

Dazu habe ich den Mousezeiger unsichtbar gemacht und ein Bild als Mousezeiger "drüber gelegt" und arbeite jetz mit der Collision Procedure von meinem neuen Mouse Zeiger! Soweit so gut! Aber wie weise ich dem Sprite ein neues Bild zu?!

Die Übergabevar. "Sprite" bringt mich nicht weiter, oder wie sehe ich das?! Momentan mache ich das so, aber das will nicht so richitg...

Delphi-Quellcode:
  
Procedure TMouseZ.DoCollision(Sprite: TSprite; Var Done: Boolean);
Var

  I, J, Y, Z: Integer;

Begin

  [...]

  If Sprite = Nil Then Exit;
  If frmMainDX.Tag <> 1 Then Exit;
  If frmOptionen.Visible = True Then Exit;
  For I := 0 To (Y * Y) - 1 Do
  Begin
    For J := 0 To (Z * Z) - 1 Do
    Begin
      If Sprite = Map[I, J] Then
      Begin
        AktMapMouse := Map[I, J];
        AktColl := 99;
        Exit;
      End;
    End;
  End;
Dann nehme ich die "AktMapMouse" Variable (die vom Typ TMap ist) und weise dann so das Image zu! Problem Nummer 2 ist, das das auch noch sehr unperformant ist...

  AktMapMouse.Image := AktTileUse.Image; Wer weiß wie man direkt mit der "Sprite" Varible das Bild zuweisen kann ?!?!


Beste Grüsse,

Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 22. Dez 2004, 20:50
Schau mal hier
Da hatte Spider auch das Problem und hat es auch gelöst.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#3

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 22. Dez 2004, 22:37
Ja,

aber das ist ja nicht die ganze Wahrheit... da kann ich ja nur sehen ob das Stück der Karte (Map) vom Typ TMap ist... aber ich kann ja nicht sehen welches Teil es ist, bzw. diesem dann gleich ein Bild zuweisen!

Oder habe ich da jetzt einen Denkfehler ?!?!


Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#4

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 12:56
Mmhh...

also, nach etwas längerem "Fummeln" habe ich es mit dem anderen Thread halbwegs hingekriegt... So sieht jetzt mein Code aus:

Delphi-Quellcode:
  Sprite := DXSpriteEngine1.Engine.GetSpriteAt(X, Y);
  If Sprite is TMap Then TMap(Sprite).Image := AktTileUse.Image;
Aber er setzt nicht für alle Sprites die neuen Images...

Oh nein, während ich dieses Posting schreibe, fällt es mir wie Schuppen aus den Haaren!!! Ich verdeutliche das mal mit einem Bild!

Transparenz an:
http://ricane.fixdiff.de/images/TransparenzAn.JPG

Transparenz aus:
http://ricane.fixdiff.de/images/TransparenzAus.JPG

Da sieht man natürlürlich deutlich warum es nicht geht... manche Mapteile werden durch den transparenten Teil verdeckt! Da muss es doch ne Lösung geben... gab es nicht diese Eigenschaft PixelCollision, oder so, die dann den Teil nicht erkennt?!?


Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 12:59
Ich verstehe nicht so genau dein Problem...
Kann es sein das über der Wiese noch eine Lage (transparente) Erde ist ?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#6

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 13:04
Ja, genau das ist das Problem!

Dadurch werden die Stücke in der "2te Reihe" durch das transparente Stück überlagert und werden beim klicken nicht erkannt.
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 13:09
Setz bei der Erde einen anderen Z-Index als bei dem Rest. Dann kannst du genau überprüfen ob auf die Erde geklickt worden war.

Z.B. hat die Erde die Z-Index von -1 der Rest hat 0:

Delphi-Quellcode:
Sprite := DXSpriteEngine1.Engine.GetSpriteAt(X, Y);
if Sprite.Z = 0 then // Es ist keine Erde.
begin

end;
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#8

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 13:36
Ich glaube wird reden aneinander vorbei! Hier nochmal das Bild eines Gras Stückchens...

http://ricane.fixdiff.de/NGras1.JPG

Dadurch das die Dinger so eng zusammen liegen, wird die zweite Reihe von der ersten Reihe verdeckt! Wenn man den "Z" Wert ändert, liegt nur die andere Reihe "oben" und verdeckt dann wieder die andere Reihe!

Bei dieser GetSpriteAtPos - Nummer, oder auch der Collision Proc. von TMouse, werden ja immer nur die "oberen" Sprites erkannt! Auch wenn man die anderen sieht, der transparente Teil liegt ja trotzdem drüber.

Erde ist das gar nicht... könnte auch rosa sein der Teil...


Beste Grüsse,

Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 13:42
Hi Hendrik,

sorry, das ist ja alles Isometrisch. Hab ich jetzt nicht drauf geachtet.

Lad dir mal den Source von X-Force (www.xforce-online.de). Das Game ist auch Isometrisch. Da kannst du mal gucken wie Jim_Raynor das gemacht hat.
  Mit Zitat antworten Zitat
Benutzerbild von Ricane
Ricane

Registriert seit: 21. Mär 2003
Ort: Quickborn
170 Beiträge
 
Delphi 7 Architect
 
#10

Re: [DELPHIX] Sprite erkennen, welches unter der Mouse ist..

  Alt 23. Dez 2004, 13:58
JA!

Ich habs!!!!! Und zwar habe ich bei dem fiktiven Mousezeiger PixelCheck auf True gesetzt und dann wieder meine "alte" Routine zur Sprite Erkennung genommen...

Endlich läuft es!!!


Beste Grüsse,

Ricane
Hendrik
So much to Code... so less Time....

www.RicaneSoftware.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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