2017-04-08 24 views
0

我正在围绕一个屏幕进行点移动,但它在改变方向时似乎暂停(停止移动)了一下。有没有办法使Python Tk画布中的移动更流畅?

是否有更好的方式使运动更平滑,或者只是停止改变方向的延迟?

这里是我用移动它是什么:

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) 
+0

您是否尝试过以较小的增量移动它?每次移动时你跳跃20个像素。 –

回答

0

命名常量可以更容易地改变它们和实验,尤其是在相同的恒定在代码中的多个地方使用。在下面的代码中,您只需要将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]) 

在写这个,我趁机展示了如何使用的字典从更改代码分解出公共代码来替代多个条件语句。移动调用中的*语法将元组分成两个参数。