问题描述
无论我怎么努力,精灵都不会移动,代码是正确的,我不会问,但是我有一个绝望的情况,求助! 我已经使用过KeyStateHandler,但是它也不起作用。
import pyglet
from pyglet.window import keys
x = 300
y = 300
w=pyglet.window.Window(600,600)
i =
pyglet.resource.image("pl.png")
sprite = pyglet.sprite.Spite(i)
@w.event
def on_draw():
w.clear()
sprite.draw(x,y)
@w.event
def key(symbol,modifiers):
if symbol == K.UP:
x+=10
解决方法
如果要在函数内部修改全局变量,则需要指定它是全局变量。
@w.event
def key(symbol,modifiers):
global x
if symbol == K.UP:
x += 10
如果不这样做,实际上是在创建一个 local 变量。 x += 10
与x = x + 10
是同一件事。如果您在函数中编写此代码,而不将x
声明为全局变量,则python会认为您想创建一个局部变量x
,该变量等于全局变量x
加10。当函数退出时,局部变量将被销毁,全局变量将保持不变。