-5

RGBカラーを表すタプルがあります。私の目標は、各フレームに固定値を追加することで、1 秒で黒(0, 0, 0)から白に変わることです。(255, 255, 255)これを関数でどのようにコーディングしますか?

更新機能は次のとおりです。

def update(self, dt):
        now = pygame.time.get_ticks() / 1000
        if now - self._spawn_time >= BALL_WAIT_TIME: 
            self.rect = self.calcnewpos(dt)
            self.handle_collision()
        else:
            # ANIMATION HERE
4

2 に答える 2

2

タプルは同じ数を繰り返しているだけなので、範囲ループを使用してタプルを最初から作成します。

for i in range(256):
    rgb = (i, i, i)

ここで加算する必要はありません。

または、フレームから計算iします。1秒間に30コマ?256 を 30 で割ってステップ サイズを取得し、フレーム番号を使用します。

step = 256 / 30.0
value = int(frame * step)
rgb = (value, value, value)
于 2013-09-29T23:15:57.583 に答える
1

フレームあたりのパフォーマンスが重要な場合は、必要なすべてのタプルを事前に割り当てることができます。

では、何をしようとしても、色の辞書を作成してみませんか?

# Pre-animation allocation
colors = {}

for i in xrange(256):
    colors[i] = (i,i,i)
# Divide 256 by frames per second
step = 256 / 60
# current RGB value
RGB_val = 0

# During animation, suppose loop iterates 60 times per second
while True:
    # During update
    RGB_val += step
    color = colors[min(RGB_val,255)]
    # Draw to display surface

コードがフレームをすばやく切り替えているときにタプルを生成しようとするのではなく、実行しようとしているものの最初にタプルを事前に割り当てておくと、最高のパフォーマンスが得られます。Python は、3 つの要素からなる 256 のタプルをメモリに簡単に読み込んで保存し、アニメーション ループの途中で最小限のパフォーマンス コストですばやくフリップすることができます。

于 2013-09-29T23:41:17.857 に答える