优化点击功能,抬起触发
This commit is contained in:
1 parent
e71c302c23
commit
b8b95377ce
1 file changed
+21
-4
@@ -18,7 +18,8 @@ class MainMenuScene(BaseScene):
|
||||
"""
|
||||
super().__init__(screen, clock)
|
||||
self.button_status = False
|
||||
self.mouse_status = False
|
||||
self.mouse_status = None
|
||||
self.mouse_last_status = None
|
||||
self.debug_status = False
|
||||
self.secret_keys = ["w","w","s","s","a","d","a","d"] # 上上下下左右左右
|
||||
self.secret_key_compare_num = 0
|
||||
@@ -56,6 +57,8 @@ class MainMenuScene(BaseScene):
|
||||
|
||||
# 更新鼠标位置
|
||||
self.mouse_pos = pygame.mouse.get_pos()
|
||||
# 更新当前帧鼠标状态
|
||||
self.mouse_last_status = self.mouse_status
|
||||
|
||||
def handle_event(self, event):
|
||||
"""
|
||||
@@ -74,8 +77,22 @@ class MainMenuScene(BaseScene):
|
||||
else:
|
||||
self.secret_key_compare_num = 0
|
||||
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
self.mouse_status = True
|
||||
# 鼠标事件
|
||||
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||
self.mouse_status = "down"
|
||||
elif event.type == pygame.MOUSEBUTTONUP:
|
||||
self.mouse_status = "up"
|
||||
elif event.type == pygame.MOUSEMOTION:
|
||||
self.mouse_status = "move"
|
||||
|
||||
def __click(self):
|
||||
"""
|
||||
判断是否点击鼠标:鼠标抬起时,上一帧的状态如果是按下或者移动则判断为点击
|
||||
"""
|
||||
if self.mouse_status == "up":
|
||||
if self.mouse_last_status in ["down", "move"]:
|
||||
return True
|
||||
return False
|
||||
|
||||
def __show(self, info, dest=(0, 0)):
|
||||
"""
|
||||
@@ -127,7 +144,7 @@ class MainMenuScene(BaseScene):
|
||||
and text_rect.x < self.mouse_pos[0] < text_rect.x + text_rect.width:
|
||||
pygame.draw.rect(self.screen, Color.white, text_rect, 1)
|
||||
# 如果点击鼠标
|
||||
if self.mouse_status:
|
||||
if self.__click():
|
||||
# 点击第一个选项
|
||||
if count == 0:
|
||||
self.switch_to_scene("GameScene")
|
||||
|
||||
Reference in new issue
Block a user