0

タイトルが悪いので説明します。

こんにちは、私は 4 つの画像を作成しました。この画像では、矢印キーを押すたびに、キャラクター (ゲーム キャラクター、車) が異なる方向を向いています (上は上、下は下、左は左、右は右を向いています)。 )、コードは次のとおりです。

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  var path,dleft,dright,dtop,dbot:string; 
begin
path:=paramstr(0);
dleft:=extractfilepath(path)+'Images\Pacman_Left.bmp';
dright:=extractfilepath(path)+'Images\Pacman_Right.bmp';
dtop:=extractfilepath(path)+'Images\Pacman_Top.bmp';
dbot:=extractfilepath(path)+'Images\Pacman_Bot.bmp';

  case Key of
     VK_UP:
    begin
      image6.Picture.LoadFromFile(dtop);
      image6.Top := image6.Top - 10;
      end;
     VK_DOWN:
       begin
       image6.Picture.LoadFromFile(dbot);
      image6.Top := image6.Top + 10;
      end;
    VK_LEFT:
       begin
       image6.Picture.LoadFromFile(dleft);
      image6.Left := image6.Left - 10;
      end;
    VK_RIGHT:
       begin
       image6.Picture.LoadFromFile(dright);
      image6.Left := image6.Left + 10;
  end;
  end;
end;

私が使用しているコードはひどいと思います。キーを一定時間以上押すと、イメージがリロードされ、同じキーを押し続ける限りそれが繰り返されるため、RAM の無駄です。私はそれについて何ができますか?ありがとう

4

3 に答える 3

1

これを行う方法は本当にたくさんあります。
古典的な方法:
アイテム (車) のすべての状態を含む 1 つの画像と、Canvas.CopyRect() メソッドを使用して適切な画像を別の画像に描画します。
別の方法:
すべての「スプライト」を TImageList にロードし、TImageList.Draw() メソッドを使用します。
等々。
主なアイデア: 目的の画像の Canvas プロパティを使用して、必要なものを描画します。

于 2013-04-21T00:55:31.517 に答える