[这段python中的代码正在输出错误“ UnboundLocalError:分配前引用的本地变量'accelY'。但是已经在同一功能中分配了accelY。有人知道为什么会这样吗?
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
accelY = -2
y += accelY
accelY
并非必要在函数的前面设置;如果没有event
具有指定的类型和键,则不会。
在开始时,按SPACE
之前,代码的工作方式类似于
while True:
y += accelY
所以它尝试使用尚不存在的accelY
。
最好在开始时设置默认值
accelY = 0
while True:
# rest of code
y += accelY
BTW:但是还会有其他问题。当您停止按SPACE
时,accelY
仍为2
,因此应在事件0
中设置值KEYUP
accelY = 0
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
accelY = -2
elif event.type == pygame.KEYUP:
if event.key == pygame.K_SPACE:
accelY = 0
y += accelY