在这里,菜鸟,我遇到了奇怪的故障或错误,也许我有此代码
Dim Shev As Application
Set Shev = Workbooks.Open(path, ReadOnly:=True).NewWindow
Shev.Visible = False
这段代码使计数器停止移动,除非当我将鼠标移到窗口上时它会忽略frame_count = 0并再次开始计数,下面的代码我创建了一个新的可验证的计时器,因此它实际上更改了一些是什么解决了我的问题,但是我对为什么上面的代码不能正常工作感到困惑,是一个小故障/错误还是只是我的错误代码哈哈,最下面是一个黑客工作,我宁愿它只是是frames_count = 0,而不是添加一个名为timer的全新变量。
Dim Shev As Workbook
Set Shev = Workbooks.Open(path, ReadOnly:=True)
Shev.Windows(1).Visible = False
答案 0 :(得分:0)
您的代码未正确处理pygame.KEYUP
事件。
由于是 event 情况,因此需要在事件处理循环中进行处理,而不是在检查按键的部分中进行处理:
if keys[pygame.K_DOWN]:
y += vel
player_direction = 'down'
timer = 1
elif event.type == pygame.KEYUP: # <-- SHOULD NOT BE HERE
frames = 0
timer = 0
但还有其他事件:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit() # Make the quit button work
elif event.type == pygame.KEYUP: # If *any* key released
if event.key == pygame.K_r # 'r' for Reset
frames = 0
timer = 0
elif event.type == VIDEORESIZE: # Makes the window resize not glitch
screen = pygame.display.set_mode((event.w, event.h), RESIZABLE)
请注意,您现有的代码会在释放任何按键时重置计时器。这听起来对我来说是错误的,因为它将在释放您的任何移动键时触发-也许这就是您想要的。上面的示例代码仅在释放的密钥为frames
的情况下重置timer
和r
。