2017-12-27 886 views
0

今天我使用TweenJS时发现了错误,当从socket.io服务器为基于tick的响应设置动画时出现问题。 我得到的位置和旋转每1/10秒(10滴答每秒),我通过TweenJS .to()功能平滑此运动。TweenJS旋转平滑问题

位置工作像一个魅力,但旋转是错误的,当我切换0/360度左右。

服务器发送例如rotation: 350°和在下一个刻度服务器发送rotation: 10°,但我不想动画整个340°,只是20°。 所以我想用最短的方式来动画。 插件不工作如何supposted。

小提琴: http://jsfiddle.net/bateriecz/wmj52eqd

编辑:我发现,TweenJS被订走最短的路为默认值,但不是为我工作

+0

所以我做了RotationPlugin的工作,但它不工作100%完美。即使在我改变角度的情况下,它也会在零度时被卡住。有谁知道如何修理它? – D3admau5

回答

0

有一个在TweenJS已经提供旋转插件:https://github.com/CreateJS/TweenJS/tree/master/src/tweenjs/plugins

从文档:

安装后,默认情况下所有的旋转补间将在旋转最短方向。例如,如果您从rotation=15补间到 rotation=330,它将逆时针旋转45度。您可以通过指定一个​​补间值来修改此行为 。 值-1将强制逆时针旋转,1将强制CW,并且0将 禁用该补间的该部分的插件效果。

注意,你需要最新的TweenJS(1.0.0),因为它是沉重,因为最后一个版本(0.6.2)重构。在早期版本中,有一个“SmartRotationPlugin”,它的工作方式也是一样的。

+0

我两次阅读文档,谢谢。版本1.0.0不包括旋转插件。你必须下载他并包含在tweenjs之后。但插件不工作。它一次旋转并锁定0°。当我尝试在下一个勾号中旋转时,旋转仍然锁定在0° – D3admau5

+0

有趣。我可以检查出来。 – Lanny

+0

你能提供一个这个问题的例子(例如codepen或jsfiddle)。 RotationPlugin的快速测试正在为我工​​作。 'createjs.Tween.get(箭头,{环:-1})。向({旋转:350},1000) \t \t \t。为({旋转:10},1000)。为了({旋转: ({rotation:350},1000).to({rotation:10},1000).to({rotation:350},1000)' – gskinner