-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathvideojs.leapmotion.js
56 lines (55 loc) · 1.68 KB
/
videojs.leapmotion.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(function() {
var video;
var controller = new Leap.Controller({enableGestures: true});
var disableFastGestures = false;
function sleepAfterValidGesture(g) {
if (console) console.log(g);
disableFastGestures = true;
var dialog = document.createElement('div');
dialog.className = 'videojs-leapmotion-hud';
dialog.textContent = g;
video.el().appendChild(dialog);
setTimeout(function(){
video.el().removeChild(dialog);
}, 1000);
setTimeout(function(){
disableFastGestures = false;
}, 2000);
}
controller.loop(function(frame) {
if (disableFastGestures) return;
if (video && frame.valid && frame.gestures.length) {//
var s = frame.gestures[0];
switch (s.type) {
case 'swipe':
if (s.state == 'start'){
if (s.direction.x > 0.8) { //left -> right
var t = video.currentTime() - 5;
video.currentTime(t<0 ? 0 : t);
sleepAfterValidGesture('Step backward');
} else if (s.direction.x < 0.8) { // right -> left
var t = video.currentTime() + 5;
video.currentTime(t>video.duration() ? video.duration() - 2.5 : t);
sleepAfterValidGesture('Step forward');
}
}
break;
case 'keyTap':
if (video.paused()) {
video.play();
sleepAfterValidGesture('Play');
} else {
video.pause();
sleepAfterValidGesture('Pause');
}
break;
}
}
});
videojs.plugin('LeapMotionPlugin', function (options) {
this.ready(function(e) {
if (console) console.log('Ready');
video = this;
});
});
})();