Einzelnen Beitrag anzeigen

Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

[Andorra] kleine Rechenprobleme

  Alt 6. Aug 2008, 13:33
Hallo,
ich bin gerade dabei ein Sprite zu bewegen, wenn ich das mit der Maus markiert habe.
Das funktioniert auch alles, nur sobald ich ran zoome bewegt sich das Sprite zu schnell.
Und wenn ich weiter weg zoome zu langsam.
Das Problem habe ich auch soweit gelöst, aber wenn ich jetzt ein Sprite anklicke um es zu verschieben springt
es erstmal weg und dann kann ich es richtig schieben.

Mir qualmt gerade schon der Kopf und ich hoffe mir kann einer weiterhelfen.
Ich komme einfach nicht auf die Lösung

Hier mal der Code:
Delphi-Quellcode:
dx,dy:double;

procedure TForm2.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  p:TAdPoint;
begin
p := AdSpriteEngine.ScreenPointToSpriteCoords(AdPoint(X,Y));
Selected := AdSpriteEngine.GetSpriteAt(p.X, p.Y);
if (Selected <> nil) and (Selected is TTexture) then
begin
    dx := Selected.X - X;
    dy := Selected.Y - Y;
end;
end;


procedure TForm2.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  p:TAdPoint;
  i:integer;
begin
  if ssLeft in Shift then
   begin
     if (Selected <> nil) and (Selected is TTexture) then
       begin
        p := AdSpriteEngine.ScreenPointToSpriteCoords(AdPoint(X,Y));
        Selected.X := (x + dx) / (1 / AdSpriteEngine.Zoom);
        Selected.Y := (y + dy) / (1 / AdSpriteEngine.Zoom);
       end;
   end;
end;

Edit: Ich habe auch noch das Programm angehängt zum Testen.
Steuerung: Rechte maustaste + Scrollen = Zoom:
Linke Maustaste = Sprite auswählen
Linke Maustaste + Maus bewegen = Sprite verschieben
Angehängte Dateien
Dateityp: rar map_editor_104.rar (301,8 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat