如何响应PyGame中的精灵鼠标点击?
问题描述:
让你的精灵响应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 sprite in sprites:
sprite.mouse_click(pygame.mouse.get_pos())
关于它的一些问题:
- 这是响应鼠标点击的最好方法?
- 如果鼠标持续按住精灵一段时间会怎么样?我如何制作一个单独的事件?
- 这是一种合理的方式来通知所有我的精灵的点击?
在此先感谢
答
我经常给我的点击对象,点击功能,就像在你的榜样。我将所有这些对象放在列表中,以便在调用点击函数时轻松进行迭代。
当检查您按下的鼠标按钮时,使用事件的按钮属性。
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().
这是一个较大的项目是一个坏主意,因为它可以创建硬找到错误。更好的是把事件保存在一个地方。较小的游戏,如简单的街机游戏,但使用探测风格可能会更有意义。
谢谢。关于`event.button == 1`部分,在PyGame中是否没有常量而不是显式1? – 2008-12-26 14:29:26