2015-04-01 66 views
0

我有一個Circle(我將稱之爲Particle整個問題)與Modifier然後Surface添加到它是管道事件到Generic Sync(觸摸/點擊進入)。 sync事件允許我更改Particlestart,updateend事件的位置,以便我可以在邊界框內拖動它。Famo.us JS - 動畫機構(粒子)移動到位置

有一個在我的應用程序規則,如果在同步的startend事件粒子的位置之間的距離是在一定的閾值,則粒子需要動畫回到start位置。

例如:粒子從同步start上的[0,0]開始,並移至[100,100]。兩點之間的距離(約〜141.42)超過了我的閾值50 ...

我該如何施加力/速度/?將Particle動畫回到[0,0]?

注:我知道我可以用Modifiers很容易做到這一點,但我試圖嚴格使用物理引擎。

編輯: 我想通了,包括使用可轉換和設置的間隔運行不斷更新粒子的位置,然後設置過渡到我所期望的最終位置和結算的可轉換的回調的時間間隔的解決方案。

var retreatTrans = new Transitionable(myParticle.getPosition()); 

// Set a temporary interval to update the position 
// as we change the transitionable (below) 
var retreatInterval = setInterval(function() { 
    myParticle.setPosition(retreatTrans.get()); 
}); 

// Set transitionable to our desired retreatPosition 
retreatTrans.set([0,0], {duration: 100}, function() { 
    // Clear our interval 
    clearInterval(retreatInterval); 
}); 

回答

0

如果我理解你的問題正確,你想從原點拖動particle/circle/rectangle,然後在touchend有particle/circle/rectangle舉動又回到了原點。

通過Spring實現物理引擎的方法之一。如果您查看Scrollview,內部它會使用彈簧在到達邊緣時「反彈」回來。我會看看我是否可以在稍後進行快速實施來證明這一點。

+0

我已經想出了一個解決方案 - 可能不是最佳實踐,但我現在用它更新我的問題。 – 2015-04-03 16:48:13

+0

'Spring'可能是一個更好的解決方案 - 謝謝指出。我會盡力解決這個問題,但如果你在此期間想出點什麼,請告訴我。謝謝! – 2015-04-03 16:56:03