Показать сообщение отдельно
  #9  
Старый 20.01.2012, 09:51
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 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; 
Вложения
Тип файла: 7z mover.7z (5.1 Кбайт, 27 просмотров)
Ответить с цитированием