要了解如何整合Leap與Web App,我反編譯紐約時報讀者Leap Motion。
關於其實現(built.js),以下代碼可能會有所幫助。 (基於Backbone.js)
var LeapController = new Leap.Controller({enableGestures:true});
window.L = LeapController;
LeapController.on('deviceConnected', function() {
console.log('deviceConnected', arguments);
// in the example code, this fires when the app starts.
// in our app, it only fires when the device is reconnected after having been connected when the app was started.
dispatch.trigger('LeapControl:reconnect');
});
LeapController.on('ready', function() {
// this fires when the app is ready.
dispatch.trigger('LeapControl:reconnect');
});
LeapController.on('connect', function() {
console.log('device is connected');
// this fires when no device is plugged in. wtf.
});
LeapController.connection.on('deviceConnect', function() {
console.log('deviceConnect');
// this fires when the device is changes state from plugged in to ungplugged and vice versa.
});
LeapController.on('deviceDisconnected', function() {
console.log('deviceDisconnected', arguments);
dispatch.trigger('LeapControl:disconnect');
});
顯然紐約時報閱讀器的開發人員已經發現,以及如果飛躍控制器加載應用程序之前已經連接這將是不容易察覺。 ( 「WTF」,哈哈....)的該定義LeapControl的行爲代碼
而部分:斷開/重新連接事件,可理解:
newNews.views.Disconnected = Backbone.View.extend({
el: $('#disconnection-box'),
initialize: function() {
_.bindAll(this);
},
open: function() {
this.listenTo(dispatch, 'LeapControl:disconnect', this.show);
this.listenTo(dispatch, 'LeapControl:reconnect', this.hide);
return this;
}, ........
因此,當LeapControl:重新連接被觸發,一個彈出窗口說「未檢測到跳躍運動控制器」會隱藏起來。
經調試,當飛躍運動啓動應用程序之前已經插入,活動將按照以下順序被觸發,並確保正確的檢測:
- LeapController.on(「連接」,函數(){ console.log('device is connected'); }); LeapController.on('ready',function(){ dispatch.trigger('LeapControl:reconnect'); });
同時,如果在預先沒有插入,這和僅僅這將被觸發:
- LeapController.on( '連接',函數(){ 的console.log( '裝置連接' ); });
作爲結論,我們可能會使用'ready'事件來處理這種情況。 HTH
謝謝@Dmitry。我爲Leap Motion設備構建的應用程序是JavaScript中的Web應用程序。這些不能直接訪問客戶端操作系統。 Leap Motion API文檔位於:http://js.leapmotion.com/api/v0.2.0-beta6/docs 在那裏似乎沒有連接的真/假呼叫。 – Theo
@Theo我更新了這篇文章 - 試試看。 –
@Dimitry 非常感謝。你的代碼運行良好(只是錯過了關閉的parens)。 看一看這個小提琴:http://jsfiddle.net/theo/5x3DA/ 你的代碼工作正常,表示如果設備連接或斷開加載頁面後。 但它並不表示在加載頁面時設備是否已連接。 所以,你應該可以測試這個案例,即使沒有設備 - 因爲這是我想確定的情況... – Theo