Javascript Famo.us Js-为身体(粒子)设置动画以定位

Javascript Famo.us Js-为身体(粒子)设置动画以定位,javascript,physics,famo.us,Javascript,Physics,Famo.us,我有一个圆圈,在整个问题中,我将其称为粒子,带有一个修改器,然后向其添加一个曲面,该曲面将事件传递到通用的同步触摸/单击。同步事件允许我更改粒子在“开始”、“更新”和“结束”事件中的位置,以便可以在边界框中拖动粒子 在我的应用程序中有一条规则,即如果同步的开始和结束事件上粒子位置之间的距离低于某个阈值,则粒子需要设置动画以返回到开始位置 例如:粒子在同步开始时从[0,0]开始,并移动到[100100]。两点之间的距离约为141.42,超过了我的阈值50 如何应用力/速度/??要将粒子动画设置回[

我有一个圆圈,在整个问题中,我将其称为粒子,带有一个修改器,然后向其添加一个曲面,该曲面将事件传递到通用的同步触摸/单击。同步事件允许我更改粒子在“开始”、“更新”和“结束”事件中的位置,以便可以在边界框中拖动粒子

在我的应用程序中有一条规则,即如果同步的开始和结束事件上粒子位置之间的距离低于某个阈值,则粒子需要设置动画以返回到开始位置

例如:粒子在同步开始时从[0,0]开始,并移动到[100100]。两点之间的距离约为141.42,超过了我的阈值50

如何应用力/速度/??要将粒子动画设置回[0,0]

注意:我知道我可以很容易地用修饰符来做这件事,但我正试图严格使用物理引擎

编辑: 我想出了一个解决方案,包括使用可传递函数并设置一个持续更新粒子位置的运行间隔,然后将可传递函数设置为我想要的最终位置,并在可传递函数的回调中清除该间隔

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);
});

如果我正确理解了您的问题,您希望从原点拖动粒子/圆/矩形,然后在touchend上将粒子/圆/矩形移回原点


用物理引擎实现这一点的方法之一是通过弹簧。如果查看Scrollview,它在内部使用弹簧在到达边缘时反弹。我将看看是否可以在稍后制定一个快速实现来演示这一点。

我已经找到了一个解决方案-可能不是最佳实践,但我现在将用它更新我的问题。Spring可能是一个更好的解决方案-感谢您指出。我会设法解决的,但如果你在这期间有什么想法,请告诉我。谢谢