
20.01.2012, 09:51
|
Так проходящий
|
|
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
|
|
Цитата:
движение это только иллюзия
|
время тоже иллюзия
PHP код:
type
TIllusion = class
private
it: TControl;
step, steps: Integer;
x0, y0: Integer;
dx, dy: double;
timer: TTimer;
public
constructor Create(ait: TControl; x, y, asteps: integer; interval: integer = 1);
destructor Destroy; override;
procedure event(sender: tobject);
end;
procedure MoveIt(it: TControl; x, y: Integer; steps: integer = 50; interval: integer = 1);
begin
TIllusion.Create(it, x, y, steps, interval);
end;
{ TIllusion }
constructor TIllusion.Create(ait: TControl; x, y, asteps, interval: integer);
begin
it := ait;
step := 0;
steps := asteps;
x0 := it.Left;
y0 := it.Top;
dx := (x-x0)/steps;
dy := (y-y0)/steps;
timer := TTimer.Create(nil);
timer.Interval := interval;
timer.OnTimer := event;
end;
destructor TIllusion.Destroy;
begin
timer.Free;
end;
procedure TIllusion.event(sender: tobject);
begin
step := step + 1;
it.Left := round(x0+dx*step);
it.Top := round(y0+dy*step);
if step = steps then
Free;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MoveIt(Image1, x, y);
end;
|