我正在尝试使 LEAP 运动来放大和缩小 Canvas 元素,并且效果很好。
现在,当您将手放在活动区域并垂直或水平移动时,对象会相应移动。美好的。
当您将手放在屏幕上时,元素的大小会减小,当您将手拉向自己时,元素的大小会增加。也很好。
当您想将手从该区域移开时,问题就开始了。
元素跟随你到极致,这意味着它变得非常大(如果你把手拉回自己身上)。我设法实现了一个控件,如果我放开一些手指(例如用手指指向屏幕 - PIN),那么图像就会冻结。好的。
现在,问题和问题:如何使当我将手放回控制区域时,元素从我离开它的相同位置开始?我整晚都在挣扎,这很困难,我没有做到。所以如果你能做到,至少我欠你一杯啤酒:)
这是代码(s 是我的画布元素,cameras[0] 具有 x,y 属性,.ratio 是深度):
var defaultRatio = s.cameras[0].ratio;
var firstValidFrame = null;
var started = null;
var controller = new Leap.Controller({enableGestures: true});
controller.loop(function(frame) {
if(frame.hands.length > 0)
{
if (!firstValidFrame && frame.valid) firstValidFrame = frame;
var hand = frame.hands[0];
var position = hand.stabilizedPalmPosition;
var fingers = hand.fingers;
var center = hand.sphereCenter;
if (position[2] < 60) {
started = 1;
}
if (fingers.length > 2 && started) {
s.cameras[0].x = - position[0]*2;
s.cameras[0].y = position[1]*2-360;
s.cameras[0].ratio = defaultRatio - (position[2]*2/360);
}
}
});
如果您有兴趣,我在 Sigma.Js 图形可视化上的 Node.Js 应用程序中将它与 Leap.Js 库一起使用...
太感谢了!