首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏screen.blit()

如何隐藏screen.blit()
EN

Stack Overflow用户
提问于 2021-05-20 16:19:23
回答 2查看 36关注 0票数 0

我做了一个背景音乐,我把音量设为静音和非静音的精灵,并使它可以点击,当你静音音乐时,我希望screen.blit(取消静音)消失。

源代码:

代码语言:javascript
复制
...
x = 0
pygame.mixer.music.load("soundtrack.wav")
volume = pygame.image.load("volume.png")
mute = pygame.image.load("mute.png")
resized_volume = pygame.transform.scale(volume, (100, 100))
resized_mute = pygame.transform.scale(mute, (100,100))
pygame.mixer.music.play(-1,0.0)


while Loop: # main game loop
...


        if event.type == MOUSEBUTTONDOWN:
            if event.button == 1: # 1 == left
                vol_rect = volume.get_rect(topleft = (700,500))
                if vol_rect.collidepoint(event.pos):
                    x += 1
                    if x > 2:
                        x = 1
                    if x == 1:
                        screen.blit(mute,(700,500))
                        pygame.mixer.music.pause()
                    else:
                        if x == 2:
                            screen.blit(volume, (700,500))
                            pygame.mixer.music.unpause()

...

pygame.quit()
sys.exit()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-20 16:25:19

您必须在每一帧中重新绘制场景。根据变量x的值绘制精灵。例如:

代码语言:javascript
复制
while Loop: # main game loop

    # [...]

    if event.type == MOUSEBUTTONDOWN:
        if event.button == 1: # 1 == left
            # [...]

    # [...]

    if x == 0:
        # [...] draw something different
    elif x == 1:
        screen.blit(mute,(700,500))
    elif x == 2:
        screen.blit(volume, (700,500))

    # [...]
票数 1
EN

Stack Overflow用户

发布于 2021-05-20 16:51:01

我没有尝试,但我希望它能起作用:

代码语言:javascript
复制
class MuteUnmute_Button:
    def __init__(self):
        self.x = 500
        self.y = 400
        self.state = True
        self.mute_image = pygame.image.load("mute_image.png")
        self.unmute_image = pygame.image.load("unmute_image.png")
        self.image = mute_image
        self.screen = screen
    def redraw(self):
        self.screen.blit(self.image,(self.x,self.y))
    def checkCollision(self):
        rect = self.image.get_rect()
        return rect.collidepoint(pygame.mouse.pos)
    def changeImage(self):
        if self.state:
            self.image = self.mute_image
        else:
            self.image = self.unmute_image

mute_unmute_button = MuteUnmuteButton()

while Loop:
    for event in pygame.event.get():
        if event.type == MOUSEBUTTONDOWN:
            if event.button == 1:
                if mute_unmute_button.checkCollision():
                    if mute_unmute_button.state:
                        mute_unmute_button.state = False
                        mute_unmute_button.changeImage()
                        pygame.mixer.music.pause()
                    else:
                        mute_unmute_button.state = True
                        mute_unmute_button.changeImage()
                        pygame.mixer.music.unpause()
    screen.fill((255,255,255)) #Fills background
    mute_unmute_button.redraw()
    pygame.display.flip()

我举了一个例子,你可以改变你的程序的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67616578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档