好的,我正在为我的游戏制作一个主屏幕,我有一个充当按钮的图像。 因此,当您单击图像上的某个位置时,图像会发生变化,然后导入游戏的下一部分。但我想要做的就是当鼠标悬停在图像上时会发出声音。但是如何让它检测鼠标悬停在按钮图像上的时间?
这是主屏幕代码的副本。 PS。我想出了我的问题,现在你可以看到我的代码了。(这是我主屏幕到目前为止的所有代码。感谢任何一个可以帮助我在鼠标悬停在图像上时检测它的人。)< / p>
import pygame, sys, random
import time
B_images = ["startbutton.png", "startbuttonpush.png"]
class BClass(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load("startbutton.png")
self.rect = self.image.get_rect()
self.rect.center = [310, 500]
def animate():
screen.fill([0,0,0])
screen.blit(B.image,B.rect)
pygame.display.flip()
pygame.init()
x = y = 0
pos = pygame.mouse.get_pos()
pygame.display.set_caption("Skier")
screen = pygame.display.set_mode([640,640])
B = BClass()
font = pygame.font.Font(None, 50)
ButtonSound = pygame.mixer.Sound('ButtonSound.ogg')
while True:
animate()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
import End.py
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if ( x in range(229,391)) and (y in range(470,530)):
B.image = pygame.image.load("startbuttonpush.png")
animate()
time.sleep(0.1)
import skier.py
答案 0 :(得分:2)
要检测鼠标悬停,请执行与检测鼠标单击相同的操作,但在pygame.MOUSEMOTION
事件上执行此操作除外。每次检测到鼠标移动时都会调用此方法。
if event.type == pygame.MOUSEMOTION:
x, y = event.pos
if ( x in range(229,391)) and (y in range(470,530)):
print "Hovering over image!"
另请注意x in range(229, 391)
效率极低,您应该改为229 <= x <= 391
。而且你最终不应该对这些坐标进行硬编码。
答案 1 :(得分:0)
我也曾经在pygame的按钮上这样做。 您应该考虑以下代码:
def is_hovering():
mouse = pygame.mouse.get_pos()
if mouse[0] > button_object.rect.x and mouse[0] < button_object.rect.x + button_object.rect.width and mouse[
1] > button_object.rect.y and mouse[1] < button_b.rect.y + button_b.rect.height:
return True
else:
return False