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