![]() |
TImage Top stimmt nicht...
Hallo,
Ich habe diese kleine Funktion:
Delphi-Quellcode:
Also, ich bewege das Bild erst nach rechts oder links und dann nach oben oder nach unten bis es die gewünschte Position erreicht. Die X Koordinaten stimmen auch immer, aber es erreicht nie ganz die Y Koordinate. Das heißt, die Message Box am ende gibt z.b. aus:
procedure TChar.walkTimerRun(Sender :TObject);
begin if(self.walkPos.X < self.finalPos.X) and not(self.X = 'r')then begin self.walkPos.X:= self.walkPos.X+4; self.layer.Left:= self.walkPos.X; TCObjectControler.walk_rigth(self); self.X:= 'l'; end else if(self.walkPos.X > self.finalPos.X) and not(self.X = 'l')then begin self.walkPos.X:= self.walkPos.X-4; self.layer.Left:= self.walkPos.X; TCObjectControler.walk_left(self); self.X:= 'r'; end else if(self.walkPos.Y < self.finalPos.Y) and not(self.Y = 'u') then begin self.walkPos.Y:= self.walkPos.Y+4; self.layer.Top:= self.walkPos.Y; TCObjectControler.walk_down(self); self.Y:= 'd'; end else if(self.walkPos.Y > self.finalPos.Y) and not(self.Y = 'd') then begin self.walkPos.Y:= self.walkPos.Y-4; self.layer.Top:= self.walkPos.Y; TCObjectControler.walk_up(self); self.Y:= 'u'; end else begin self.walkTimer.Enabled:= false; showmessage(IntToStr(self.layer.Top)+' == '+IntToStr(self.finalPos.Y)); self.walkTimer.Enabled:= false; self.layer.Picture.Bitmap.Assign(nil); self.stand.GetBitmap(0, self.layer.Picture.Bitmap); self.Y:= ''; self.X:= ''; end; end; 405 == 400 also sollte das Bild ja sogar ein bisschen drüber hinaus "fahren" aber sie bleibt immer ca. 20 Pixel vorher stehen :-( Das Bild ist auf einem Pannel:
Delphi-Quellcode:
Die Create Funktion:
tom:= TChar.Create(Form1);
tom.layer.Parent:= Form1.haus;
Delphi-Quellcode:
Die Koordinaten bekommen ich von der Mausposition:
constructor Tchar.Create(AOwner: TComponent);
Begin Inherited Create(AOwner); //layer layer:= TImage.Create(AOwner); layer.Height:= 170; layer.Width:= 100; layer.Stretch:= true; layer.Transparent:= false; //stand stand:= TImageList.Create(AOwner); //walkLeft walkLeft:= TImageList.Create(AOwner); //walkRight walkRigth:= TImageList.Create(AOwner); //walkUP walkUp:= TImageList.Create(AOwner); //walkDown walkDown:= TImageList.Create(AOwner); //walkTimer walkTimer:= TTimer.Create(AOwner); walkTimer.OnTimer:= walkTimerRun; walkTimer.Enabled:= false; walkTimer.Interval:= 100; //standTimer standTimer:= TTimer.Create(AOwner); standTimer.Enabled:= false; end;
Delphi-Quellcode:
Hat jemand eine Ahnung was ich falsch gemacht habe oder wieso das so ist??
self.walkTo(tom, Sender.ScreenToClient(Mouse.CursorPos).X, Sender.ScreenToClient(Mouse.CursorPos).X);
procedure TObjectControl.walkTo(objekt : TChar; posX, posY : integer); begin objekt.walkPos.X:= objekt.layer.Left; objekt.walkPos.Y:= objekt.layer.Top; objekt.finalPos.X:= posX; objekt.finalPos.Y:= posY; objekt.walkTimer.Enabled:= true; end; mfg. TitanNano |
AW: TImage Top stimmt nicht...
Image1.Top wird vermutlich stimmen, aber setz mal Image1.Picture.Bitmap.Width bzw. Height := Image1.Width bzw. Height.
|
AW: TImage Top stimmt nicht...
Delphi-Quellcode:
bringt nichts :-(
layer.Height:= 170;
layer.Picture.Bitmap.Height:= layer.Height; layer.Width:= 100; layer.Picture.Bitmap.Width:= layer.Width; |
AW: TImage Top stimmt nicht...
ich hab noch ein kleines Problem:
Delphi-Quellcode:
er meckert immer:
objekt.finalPos.X:= pos.X-(objekt.layer.Width/2);
[Fehler] objectControler.pas(137): E2010 Inkompatible Typen: 'Integer' und 'Extended' wie löse ich das?? |
AW: TImage Top stimmt nicht...
X kann nur Integer sein und bei einer Disivion können ja auch Kommazahlen rauskommen. Du musst um den Aufruf der Disivion
![]() |
AW: TImage Top stimmt nicht...
danke dir klappt jetzt super :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 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