AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [Andorra]: Zur Lauzeit erstelle Sprites finden
Thema durchsuchen
Ansicht
Themen-Optionen

[Andorra]: Zur Lauzeit erstelle Sprites finden

Ein Thema von Spiderpig_GER_15 · begonnen am 13. Nov 2008 · letzter Beitrag vom 13. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#1

[Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:31
hi

Ich erstelle zur Laufzeit (OnKlick) ein Sprite:

Delphi-Quellcode:
  TMySprite = class(TImageSpriteEx)
  protected
    procedure DoMove(TimeGap: double); override;
    procedure DoDraw; override;
    // procedure DoCollision(Sprite: TSprite; var Done: boolean); override;
  public
    Info: String;
    procedure Klick;
    procedure GetInfo(Sender: TObject; var Key: Char);
    constructor Create(AParent: TSprite); override;
    destructor Destroy; override;
  end;
Delphi-Quellcode:
procedure TForm1.Set_Sprite( XX: Integer; YY: Integer; kind: string );
begin
  with TMySprite.Create( Form1.SpriteEngine ) do
  begin
    X:= get_Location( XX - Form1.Left - 20 ) * 20 + ( 0 - SpriteEngine.X );
    Y:= get_Location( YY - Form1.Top - 40) * 20 + ( 0 - SpriteEngine.Y );
    Z:= 1;
    Image:= ImageList.Find(kind);
    Info:='1';
  end;
end;
Ich müsste doch eigentlich wie folgt nachschauen können ob sich unter dem Cursor eine wie oben erstelle Sprite befindet:

Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  If SpriteEngine.GetSpriteAt(Mouse.CursorPos.x,Mouse.CursorPos.Y) = TMySprite then
  showmessage('geht');
end;
Aber leider geht das nicht... Was soll ich tuen

MfG

Spiderpig
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

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

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:44
Was geht nicht?
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#3

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:50
  If SpriteEngine.GetSpriteAt(Mouse.CursorPos.x,Mouse.CursorPos.Y) = >>>TMySprite<<< then TMySprite wird nicht angenommen (incompatible types)

aber ich weiß nicht was da stattdessen hinsoll ?!
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

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

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:51
Versuch mal:

If SpriteEngine.GetSpriteAt(Mouse.CursorPos.x,Mouse.CursorPos.Y) is TMySprite then
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#5

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:53
okay, danke, jetzt ist der fehler weg und das programm lässt sich starten, aber die meldung wird nicht ausgelöst wenn sich so ein sprite unter dem cursor befindet
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#6

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:58
und wenn du
If SpriteEngine.GetSpriteAt(Mouse.CursorPos.x,Mouse.CursorPos.Y) <> nil then eingibst?
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

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

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 16:59
Er will aber nur auf sein eigenes Sprite reagieren.

Passen denn die Koordinaten so oder muss man noch ein Offset der Engine dazuaddieren?
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#8

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 17:03
also eigentlich dürfe sich nichts verschoben haben, ich probier mal <> aus. einen Moment
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#9

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 17:08
Also, wenn ich das einfach so schreibe:

Delphi-Quellcode:
  If SpriteEngine.GetSpriteAt(Mouse.CursorPos.x,Mouse.CursorPos.Y) <> nil then
  begin
    showmessage('geht');
  end;
geht das erstmal Blindalrarm los wegen dem meinem Backgroundsprite.

Nehme ich den Background raus, reagiert es wieder nciht. Springt GetSpriteAt vllt nicht TImageSpriteEx an?
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Benutzerbild von Spiderpig_GER_15
Spiderpig_GER_15

Registriert seit: 17. Mär 2008
298 Beiträge
 
Delphi 7 Personal
 
#10

Re: [Andorra]: Zur Lauzeit erstelle Sprites finden

  Alt 13. Nov 2008, 17:09
hier ist der Quelltext der Funktion GetSpriteAt():

Delphi-Quellcode:
function TSprite.GetSpriteAt(X, Y: integer): TSprite;
var i:integer;
    rect:TAdRect;
begin
  result := nil;
  for i := Items.Count - 1 downto 0 do
  begin
    rect := Items[i].BoundsRect;
    if (X >= rect.Left) and (X <= rect.Right) and
       (Y >= rect.Top) and (Y <= rect.Bottom) then
    begin
      result := Items[i];
      break;
    end;
  end;
end;
wenn euch das hilft
---Zufall ist das Inkognito Gottes---
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:31 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