我已經開始編寫連接4遊戲(點擊觸發光盤下落),並且我想要爲光盤的下落製作動畫。 於是我開始通過創建一個新的光盤映像:努力在Tkinter中創建動畫
discList[y][x] = can.create_image((xCan,yCurrent), image=imgRedDisc, anchor="nw")
盤以在xCan畫布上創建的; yCurrent。我現在想要做的就是讓光盤落到目的地,yCan。我把它不斷遞增光盤的yCurrent我滴功能,直到它到達yCan與遞歸性和後()方法:
def drop(disc):
global yCan, yCurrent
can.move(disc, 0, 1)
yCurrent += 1
if yCurrent < yCan:
can.after(5, drop(disc))
現在有什麼我的問題是,是該盤的中介位置不顯示,那隻能說明幾秒鐘後直接在底部。 經過一番研究,我添加了一行更新畫布:
def drop(disc):
global yCan, yCurrent
can.move(disc, 0, 1)
yCurrent += 1
can.update()
if yCurrent < yCan:
can.after(5, drop(disc))
現在我能看到我的盤落,但它得到各自發揮後laggy;光盤只在點擊後幾秒鐘後開始下降(這會觸發它們的下落)。另一個問題是,如果我通過雙擊非常迅速地觸發兩個光盤幾乎完全一致地倒下,第一個光盤中途停止下落,然後簡單地從畫布上掉下來。
我的問題是,我如何顯示我的光盤的每一個步驟沒有can.update()
? 另外我將每個光盤ID存儲在列表(discList)中,是否有更方便的方式來存儲動態創建的畫布圖像?