我在游戏中制作了背景音乐,我将音量静音和取消静音精灵并使其可点击, 当您将音乐静音时,我希望 screen.blit(unmute) 消失。
源代码:
...
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()
答案 0 :(得分:1)
您必须在每一帧中重新绘制场景。根据变量 x
的值绘制精灵。例如:
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 :(得分:1)
我没有尝试,但我希望它有效:
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()
我举了一个例子,你可以为你的程序更改代码。