Python 在PyGame中,我如何响应鼠标点击精灵?
在PyGame中,让精灵响应鼠标点击的标准方法是什么 在我的事件循环中,有一件事很简单:Python 在PyGame中,我如何响应鼠标点击精灵?,python,pygame,Python,Pygame,在PyGame中,让精灵响应鼠标点击的标准方法是什么 在我的事件循环中,有一件事很简单: for event in pygame.event.get(): if event.type == pygame.QUIT: exit_game() [...] elif ( event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed()[0]): for
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit_game()
[...]
elif ( event.type == pygame.MOUSEBUTTONDOWN and
pygame.mouse.get_pressed()[0]):
for sprite in sprites:
sprite.mouse_click(pygame.mouse.get_pos())
关于它的一些问题:
提前感谢我通常会给我的可点击对象一个点击功能,就像你的例子一样。我将所有这些对象放在一个列表中,以便在调用click函数时进行迭代 检查按下哪个鼠标按钮时,请使用事件的button属性
import pygame
from pygame.locals import * #This lets you use pygame's constants directly.
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN: #Better to seperate to a new if statement aswell, since there's more buttons that can be clicked and makes for cleaner code.
if event.button == 1:
for object in clickableObjectsList:
object.clickCheck(event.pos)
我认为这是推荐的方法。单击只注册一次,因此它不会告诉您的精灵用户是否正在用按钮“拖动”。这可以通过一个布尔值轻松实现,该布尔值在MOUSEBUTTONDOWN事件中设置为true,在MOUSEBUTTONUP事件中设置为false。已对“可拖动”对象进行迭代以激活其函数。。。等等
但是,如果您不想使用事件处理程序,可以让更新函数检查输入:
pygame.mouse.get_pos()
pygame.mouse.get_pressed().
这对于大型项目来说是个坏主意,因为它会产生难以发现的bug。最好只是把事情放在一个地方。小型游戏,如简单的街机游戏,使用探索式风格可能更有意义。谢谢。关于
event.button==1
部分,PyGame中没有常量而不是显式的1吗?我认为不需要它。1总是左边的按钮,2是中间的按钮,3是右边的按钮。即使鼠标只有两个按钮,3也是正确的。