我在开发的项目中遇到问题。问题出在程序的工具中,是通过 overRect(...)函数来评估,以延迟鼠标光标位于矩形区域的时间。 (当其为true时返回1 ,否则为 0 ),并且当鼠标光标移出时延迟时间被激活,而当鼠标光标返回到rect区域时延迟时间被中断。 我的问题是,仅当我将鼠标置于矩形区域上的光标上时,延迟才被激活。 有人可以帮我解决这个问题吗?
这是我的主要代码, listAcc是9个大小的列表,与问题无关; listStat是31个大小的列表,与问题无关; auxDelay仅在开始时才需要 g:
while done == False:
for event in pygame.event.get():
#Adjustments
diagram = pygame.transform.scale(diagram, screen.get_size())
w, h = pygame.display.get_surface().get_size()
mask = pygame.surface.Surface((w, h)).convert_alpha()
_Loc = (int((838*w)/1338), int((471*h)/755))
_Size = int(35*w/1338)
if (event.type == pygame.QUIT) or (event.type == pygame.KEYDOWN and event.key == pygame.K_q):
done = True
if event.type == pygame.KEYDOWN and event.key == pygame.K_a:
arrived = 1
screen.blit(diagram, (0, 0))
if arrived == 1:
if i<50: i+=1
mask.fill((120, 120, 120, i))
pygame.draw.circle(mask, (0,0,0,0), _Loc, _Size)
pygame.draw.rect(mask, (0,0,0,0), (40, 365, 223, 644))
#HERE STARTS THE TOOL PROGRAM DESCRIPTED
for j in range(len(listAcc)):
if overRect(listAcc[j], xw, yh) == 1:
showStat(mask, listAcc[j], listStat)
delay = 0
auxDelay = 1
elif auxDelay == 1:
delay = 1
screen.blit(mask, (0, 0))
pygame.display.update()
#HERE IS WHERE THE DELAY IS RAN
if delay == 1 and i == 50:
for milsec in range(3000):
pygame.time.delay(1)
for j in range(len(listAcc)):
if overRect(listAcc[j], xw, yh) == 1:
stop = 1
break
if stop == 1:
stop = 0
break
对程序和目的的任何疑问都可以询问。 谢谢