我正在尝试制作音乐播放系统。我制作了一个名为Circle的类,它定义了按钮及其属性,该类具有一个名为click()的方法,该方法可以检测是否单击了屏幕中的特定区域。
def click(self):
"""
In general, point x and y must satisfy (x - center_x)^2 + (y - center_y)^2 <= radius^2
"""
current_mouse_position = pygame.mouse.get_pos()
value_of_equation_at_current_mouse_position = (current_mouse_position[0]-self.x)**2+(current_mouse_position[1]-self.y)**2
if (value_of_equation_at_current_mouse_position <= self.radius**2):
if pygame.mouse.get_pressed()[0]:
return True
else:
return False
我想在单击时切换播放和暂停按钮。 我的逻辑:
if btn_play.click():
if togglePlayaPause == 1:
if paused:
pygame.mixer.music.unpause()
else:
pygame.mixer.music.play()
played = 1
togglePlayaPause = togglePlayaPause ^ 1
pygame.time.wait(250)
print("clicked")
a = 0
b = 1024
paused = False
if togglePlayaPause == 0:
pygame.time.wait(550)
if btn_pause.click():
pygame.mixer.music.pause()
print("paused")
paused = True
newSong = 0
played = 0
togglePlayaPause = togglePlayaPause ^ 1
pygame.time.wait(250)
if togglePlayaPause == 1:
btn_play.draw()
else:
btn_pause.draw()
由于“播放”和“暂停”按钮都位于同一坐标上,因此clik()方法对两者均返回true,并且两个if语句均执行,因此音乐在播放一段时间后会暂停。我该如何解决这个问题?
答案 0 :(得分:1)
如果togglePlayaPause
为1,则必须评估btn_play
,否则,如果togglePlayaPause
为0,则必须评估btn_pause
。
使用if
elif
else
语句来这样做:
if togglePlayaPause == 0:
if btn_play.click():
if paused:
pygame.mixer.music.unpause()
else:
pygame.mixer.music.play()
# [...]
elif togglePlayaPause == 1:
pygame.time.wait(550)
if btn_pause.click():
pygame.mixer.music.pause()
# [...]
或
if togglePlayaPause == 0:
# [...]
else: # togglePlayaPause is either 0 or 1
# [...]