有没有办法让 Python Tk canvas 中的移动更顺畅?
is there a way to make movement smoother in the Python Tk canvas?
我正在让一个点在屏幕上移动,但它似乎在改变方向时暂停(停止移动)了一点。
有没有更好的办法让移动更顺畅,或者干脆停止变向延迟?
这是我用来移动它的方法:
def keypress(event):
key = (event.keysym)
if key == "w":
canvas.move(player,0,-20)
if key == "a":
canvas.move(player,-20,0)
if key == "s":
canvas.move(player,0,20)
if key == "d":
canvas.move(player,20,0)
canvas.bind_all("<Key>", keypress)
命名常量可以更轻松地更改它们和进行实验,尤其是当同一常量在代码中的多个位置使用时。在下面的代码中,您只需更改一份 20
即可进行实验,正如 Bryan 所建议的那样。
distance = 20
movements = {
'w': (0, -distance),
'a': (-distance, 0),
's': (0, distance),
'd': (distance, 0),
}
def keypress(event):
key = (event.keysym).lower()
canvas.move(player, *movements[key])
在撰写本文时,我借此机会展示了如何通过从不断变化的代码中提取出通用代码来使用字典来替换多个条件语句。 move 调用中的 * 语法将元组分成两个参数。
我正在让一个点在屏幕上移动,但它似乎在改变方向时暂停(停止移动)了一点。
有没有更好的办法让移动更顺畅,或者干脆停止变向延迟?
这是我用来移动它的方法:
def keypress(event):
key = (event.keysym)
if key == "w":
canvas.move(player,0,-20)
if key == "a":
canvas.move(player,-20,0)
if key == "s":
canvas.move(player,0,20)
if key == "d":
canvas.move(player,20,0)
canvas.bind_all("<Key>", keypress)
命名常量可以更轻松地更改它们和进行实验,尤其是当同一常量在代码中的多个位置使用时。在下面的代码中,您只需更改一份 20
即可进行实验,正如 Bryan 所建议的那样。
distance = 20
movements = {
'w': (0, -distance),
'a': (-distance, 0),
's': (0, distance),
'd': (distance, 0),
}
def keypress(event):
key = (event.keysym).lower()
canvas.move(player, *movements[key])
在撰写本文时,我借此机会展示了如何通过从不断变化的代码中提取出通用代码来使用字典来替换多个条件语句。 move 调用中的 * 语法将元组分成两个参数。