mrE*_*pty 10 javascript jquery gesture leap-motion
我正在尝试使用javascript API简单地使用Leap Motion获取滑动手势的方向.我的代码是:
$(document).ready(function() {
controller = new Leap.Controller("ws://localhost:6437/");
listener = new Leap.Listener();
listener.onFrame = function(controller) {
var frame = controller.frame();
var hands = frame.hands();
var pointables = frame.pointables();
var gestures = frame.gestures();
$("#rotationAxis").text(pointables.length);
$("#gestureDetected").text(gestures[0]);
}
controller.addListener(listener);
controller.enableGesture("swipe", true);
listener.onConnect = function(controller) {
// calibrate = new Leap.Calibrate(controller);
// calibrate.onComplete = function(screen){
// }
}
});
Run Code Online (Sandbox Code Playgroud)
我可以从数组中获取当前手势,但无法获取类型或方向.有任何想法吗?
谢谢.
Cha*_*ard 11
如果您关心向右,向左,向上或向下,您可以比较滑动方向向量的水平和垂直坐标的绝对值,以查看滑动是更垂直还是更水平(然后将相关坐标与零进行比较)要查看滑动是向右还是向左,向上还是向下):
// Setup Leap loop with frame callback function
var controllerOptions = {enableGestures: true};
Leap.loop(controllerOptions, function(frame) {
if (frame.gestures.length > 0) {
for (var i = 0; i < frame.gestures.length; i++) {
var gesture = frame.gestures[i];
if (gesture.type == "swipe") {
//Classify swipe as either horizontal or vertical
var isHorizontal = Math.abs(gesture.direction[0]) > Math.abs(gesture.direction[1]);
//Classify as right-left or up-down
if(isHorizontal){
if(gesture.direction[0] > 0){
swipeDirection = "right";
} else {
swipeDirection = "left";
}
} else { //vertical
if(gesture.direction[1] > 0){
swipeDirection = "up";
} else {
swipeDirection = "down";
}
}
}
}
}
})
Run Code Online (Sandbox Code Playgroud)
通过稍微复杂的比较,您可以将滑动分类为向前或向后.
经过快速分析,我找到了您要查找的信息:
var gestureType = frame.gestures[0].type;
if (gestureType === "swipe")
{
if (frame.gestures[0].direction[0] > 0)
console.log(">>> swipe >>>");
else
console.log("<<< swipe <<<");
}
Run Code Online (Sandbox Code Playgroud)