2015-10-05 90 views
0

我想能夠判斷畫布動畫的每個部分什麼時候結束,以便我可以重新加載它。如何判斷畫布動畫何時結束

每個'pod'應該到達其第一個行程的末尾,然後轉到隨機的下一個可用站點,然後在無限循環(或很長的一個循環)中再次執行。

現在查找下一個電臺的代碼有效,但我無法獲得每個單獨的pod動畫結束的觸發器。我知道,當

aPod.currentPoint + 1 == aPod.points.length - 1 

吊艙已到達目的地,但沒有發生。

小提琴這裏:https://jsfiddle.net/f9nob149/1/

我一直在敲我的頭這一個星期,真的需要幫助!

回答

2

看來,您只需檢查您的currentPoint是否爲該吊艙的最後一個點points

Here is a jsfiddle其中我創建了doneCallback。我還必須添加done pod屬性,以便不會多次調用它。

順便說一句,這是可怕的,沒有做什麼,我想你想它:

new Pod(
    startX = fromX, 
    startY = fromY, 
    endX = toX, 
    endY = toY, 
    riders = randomPass(), 
    color = colorArray[riders - 1], 
    points = linePoints({ 
    startX, startY 
    }, { 
    endX, endY 
    }), 
    currentPoint = 0) 

JavaScript不支持命名的參數像蟒蛇例如做。這是幹什麼的,將=右邊的所有值賦給在全局範圍創建的新變量(因爲它們聲明沒有var),然後將這些值轉發給Pod構造函數,按的順序(而不是通過什麼你可能會認爲是名字)。也有一些瀏覽器會拒絕它(即Safari),並且它不允許在strict模式下(我認爲下一個javascript版本(ES6)也是如此)。

什麼,但是你可以做的是使用OBJET作爲參數:

function Pod(args){ 
    this.startX = args.startX; 
    this.startY = args.startY; 
    // Etc. 
} 

var pod = new Pod({ 
    startY: fromY, 
    startX: fromX // Order does not matter anymore. 
    // Etc. 
}); 
+0

感謝你爲這個。我不確定我在哪裏找到了創建構造函數的形式 - 試圖通過其他人作品的片段在網上教自己可能會導致不良的習慣。我確實注意到訂單問題,但由於表格通常似乎起作用,所以我沒有太多考慮。 – Tyler330