up, down, left, right = None, None, None, None
def cancel_movement():
global up, down, left, right
try:
root.after_cancel(up)
root.after_cancel(down)
root.after_cancel(left)
root.after_cancel(right)
except:
pass
def move_down(event=None):
cancel_movement()
if canvas.coords(snak[-1]) == food_copy:
canvas.delete(food)
snak.append(canvas.create_rectangle(food_copy[0], food_copy[1], food_copy[2], food_copy[3], fill="red"))
create_food()
prethodna_vrednost = canvas.coords(snak[0])
prosli = prethodna_vrednost
canvas.move(snak[0], 0, 10)
for x in range(1, len(snak)):
prosli = canvas.coords(snak[x])
x1 = prethodna_vrednost[0]
y1 = prethodna_vrednost[1]
x2 = prethodna_vrednost[2]
y2 = prethodna_vrednost[3]
canvas.coords(snak[x], x1, y1, x2, y2)
prethodna_vrednost = prosli
check_collision()
down = root.after(100, move_down)
When i use cancel_movement() nothing seems to happen, what am i doing wrong? Besides the move_down function there are move_up, move_left and move_right functions.
Also is there a better way to prevent calling of the same movement function multiple times besides using the root.after_cancel on every call?