Код:
	Procedure TPlayerSprite1.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount);
    // ïðè íàæàòèè äâèãàåì îáúåêò âëåâî
    if isLeft in MainForm.DXInput.States then
      begin
      x:=x-15;
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('obichniy');
      end;
    // ïðè íàæàòèè äâèãàåì îáúåêò âïðàâî
    if isRight in MainForm.DXInput.States then
      begin
      x:=x+15;
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('obichniy');
      end;
    // íèæíèé áëîê
    if isButton1 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('BottomBlock');
    // âåðõíèé áëîê
    if isButton2 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('TopBlock');
    // âåðõíèé óäàð
    if isButton3 in MainForm.DXInput.States then
      with TPlayerSprite1.Create(Engine) do
      begin
        PixelCheck := True;
        Image:=MainForm.DXImageListAnime1.Items.Find('TopUdar');
        Width := Image.Width;
        Height := Image.Height;
        if maxPrig<300 then
          begin
          Y:=Y+5;
          X:=X+1;
          end
        else
          begin
            if y=10 then exit;
              Y:=Y-5;
          end;
        AnimSpeed := 10 / 1000;          //ñêîðîñòü àíèìàöèè
      end;
    // óäàð ëåâîé
    if isButton4 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('UdarLevoy');
    // óäàð ïðàâîé
    if isButton5 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('UdarPravoy');
    // íèæíÿÿ ïîäíîæêà
    if isButton5 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('UdarNiz');
    // óäàð ëåâîé íîãîé
    if isButton5 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('UdarNogoyZemlyaLevo');
    // óäàð ïðàâîé íîãîé
    if isButton5 in MainForm.DXInput.States then
      TPlayerSprite1.Create(Engine).Image := MainForm.DXImageListAnime1.Items.Find('UdarNogoyZemlyaPravo');
    if  y >= MainForm.DXDraw.SurfaceHeight-image.Height then  //íå ïóñêàåì
      y := MainForm.DXDraw.SurfaceHeight-image.Height;        //îáúåêò
    if  x >= MainForm.DXDraw.SurfaceWidth -image.Width  then  //çà ãðàíèöû
      x := MainForm.DXDraw.SurfaceWidth -image.Width;         //ôîðìû
    if  y <= 0 then
      y := 1;
    if  x <= 0 then
      x:=1;
end; 
 
Тут часто вызывается метод Create, когда меняется рисунок, так и оставить?