0

最近 pygame を試していて、アルファ不透明度に遭遇しました。イメージ/サーフェスが 1 秒間に 2 回点滅するようにアルファの範囲を調整するにはどうすればよいですか?

現在、毎秒30フレームでこれを描いています。

def blit_image(self):
        for alpha in range(0,255,50):
            for i in self.image_array:
                a = i.set_alpha(alpha)
                i.draw_on(self.screen)
        pygame.display.flip()

画像の境界が不透明になっているだけで、まばたきが実際に起こっているかどうかさえわかりません。これを行う方法について何か考えはありますか?

4

1 に答える 1

1

簡単に言うと: (あなたのコード) 毎秒 30 フレーム (30FPS) であるため、フレームごとにアルファが減少+1/15 * 255し、15 フレーム後にアルファが増加-1/15 * 255し、15 フレーム後に再び減少します。

背景色を点滅させる方法の完全な例です(SOの同様の質問に対する回答でした)。それはあなたがしていることではありませんが、多分それはあなたを助けるでしょう.

import pygame

#----------------------------------------------------------------------

class Background():

    def __init__(self, screen):
        self.screen = screen

        self.timer = 0
        self.color = 0
        self.up = True # up or down

    #-------------------

    def change(self):

        if self.timer == 15: # 15 frames for UP and 15 frames for DOWN
            self.timer = 0
            self.up = not self.up

        self.timer += 1

        if self.up:
            self.color += 10
        else:
            self.color -= 10

        print self.up, self.color

    #-------------------

    def draw(self):
        self.screen.fill( (self.color, self.color, self.color) )

#----------------------------------------------------------------------

class Game():

    def __init__(self):
        pygame.init()

        self.screen = pygame.display.set_mode((800,600))

        self.background = Background(self.screen)

    #-------------------

    def run(self):

        clock = pygame.time.Clock()

        RUNNING = True

        while RUNNING:

            # ----- events -----

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    RUNNING = False
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_ESCAPE:
                        RUNNING = False

            # ----- changes -----

            self.background.change()

            # ----- draws ------

            self.background.draw()

            pygame.display.update()

            # ----- FPS -----

            clock.tick(30)

        #-------------------

        pygame.quit()

#----------------------------------------------------------------------

Game().run()
于 2013-11-08T14:10:50.480 に答える