gpt4 book ai didi

python - 当鼠标悬停在pygame中时如何给盒子着色?

转载 作者:行者123 更新时间:2023-11-30 22:27:03 25 4
gpt4 key购买 nike

我正在使用 pygame 制作一个游戏,我希望当鼠标悬停在我的文本上时,该框会被着色。

这是我到目前为止所拥有的:

在事件处理循环中:(CheckToUnshadeBoxes 中的元组是文本表面对及其框(来自 get_rect 方法))

elif event.type == MOUSEMOTION:
CheckToShadeBoxes(event, LERect, LoadRect, PlayRect)
CheckToUnshadeBoxes(event, (LERect, LESurf),
(LoadRect, LoadSurf), (PlayRect, PlaySurf))

这里是CheckToShadeBoxes :

def CheckToShadeBoxes(event, *args):
'''
shade the box the mouse is over
'''

for rect in args:
s = pg.Surface((rect.width, rect.height))
s.set_alpha(50)
print(rect.x, rect.y)
s.fill(COLOURS['gray'])
x, y = event.pos
if rect.collidepoint(x, y):
SURFACE.blit(s, (rect.x, rect.y))

CheckToUnshadeBoxes :

def CheckToUnshadeBoxes(event, *args):
''' if the mouse moves out of the box, the box will become unshaded.'''
for (rect, TextSurf) in args:

x, y = event.pos
if not rect.collidepoint(x, y):
SURFACE.blit(TextSurf, (rect.x, rect.y))

这很好用!只是当我将鼠标移动到框内时,框会继续变得越来越暗,直到您甚至看不到文字!我知道这是一个小细节,但它已经困扰我很长时间了,我不知道如何解决它。

顺便说一句,如果还不够明显的话,COLOURS是一个带有字符串键和 RGB 元组值的字典,并且 SURFACE是我的主要绘图表面。

如果您对我的代码或我所做的任何事情有任何疑问,请发表评论!

最佳答案

如果您传递的矩形是您自己的派生类,那么我建议创建一个 .is_shaded 类变量并在着色之前检查以确保该变量为 false。

如果这些矩形不是您自己的类扩展另一个类,那么我建议您创建一个,因为这会让事情变得更简单

关于python - 当鼠标悬停在pygame中时如何给盒子着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com