Famo.us Js - Animate Body(Particle)to Position

时间:2015-04-01 00:14:58

标签: javascript physics famo.us

我有一个Circle(在整个问题中我将其称为Particle),其中添加了Modifier,然后添加了Surface,将事件传递给了Generic Sync(触摸/点击)。 sync事件允许我更改Particlestartupdate事件的end位置,以便我可以在边界框内拖动它。

我的应用程序中有一条规则如果粒子在同步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);
});

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您想要从原点拖动particle/circle/rectangle,然后在touchend上拖动particle/circle/rectangle移回原点。

使用物理引擎实现此目的的方法之一是通过Spring。如果你看一下Scrollview,它会在内部使用一个弹簧来弹跳"弹跳"当你到达边缘时回来。我会看看我是否可以稍后进行快速实施以证明这一点。