1

pygame.blitが画面上でブリットされた画像をどのように管理するのか疑問に思いました。画面上で複数の画像をブリットすると、各画像が前の画像の上に積み重ねられていることがわかります。

これらすべての画像をクリアするにはどうすればよいですか?画面上にたくさんの画像が積み重なっていると、(どういうわけか)大きな問題はありませんか?現在、画面全体で白いbgまたはカスタムbgをブリットして、画面を「クリア」しています。私が取り組んでいるアプリは非常に小さいので、これまでのところ問題などはありません。

4

2 に答える 2

2

画像をサーフェスにブリットすると、基本的にサーフェスに描画されます。ブリットまたはブリットされたオブジェクトの場所は保存されず、変更できません。まるでキャンバスに画像を描いているようなものです。新しい画像は古い画像を覆い隠し、ある画像が別の画像と衝突した場合にそれを取り除く方法はありません。

これを解決するための最も一般的なアプローチは、を使用して画面を完全にクリアし、surface.fill()フレームごとに画像を再描画することです。

画像がたくさんあるときに問題が発生するかどうかについての質問に答えるには、いいえ。ウィンドウは、カメラで撮影する通常の写真のように、個々のピクセルが特定の色であるためにのみ保存されるため、ブリットするオブジェクトの数に関係なく、ゲームには常に同じ時間がかかります。

于 2012-11-16T20:02:04.117 に答える
1

複数のアプローチがあります:

  • あなたがしているように、背景全体をきれいにしてください。コンピューターがfpsに追いついている場合は、このままにしておく方がよいでしょう。

  • オブジェクトをブリットした領域のみをクリーンアップします(pygame.sprite.RenderUpdatesを参照) 。

  • あなたの場合、積み重ねられたオブジェクトがたくさんある場合は、同じ背景を何度も繰り返さないように、衝突する長方形の間の結合を見つけようとして、独自のソリューションを作成することをお勧めします。

于 2012-11-16T18:12:28.447 に答える