2015-11-05 50 views
1

我有這樣的監聽器監聽器丟失

public class LeapEventListener : Listener 
{ 
    public string frame = string.Empty; 
    public string Frame { get { return frame; } } 
    public event EventHandler FrameChanged; 

    private void SetFrame(string value) 
    { 
     if (value == null) value = string.Empty; 
     if (frame == value) return; 
     frame = value; 
     var handler = FrameChanged; 
     if (handler != null) handler(this, EventArgs.Empty); 

    } 
    public override void OnFrame (Controller controller) 
    { 
     Frame frame = controller.Frame(); 
     FingerList fingers = frame.Fingers; 

     SetFrame("Frame id: " + frame.Id); 
    } 

    public override void OnInit (Controller controller) 
    { 
     Console.WriteLine ("Initialized"); 
    } 

    public override void OnConnect (Controller controller) 
    { 
     Console.WriteLine ("Connected"); 
     //If using gestures, enable them: 
     controller.EnableGesture (Gesture.GestureType.TYPE_CIRCLE); 
    } 

    //Not dispatched when running in debugger 
    public override void OnDisconnect (Controller controller) 
    { 
     Console.WriteLine ("Disconnected"); 
    } 
} 

然後在我的Form1.cs的全球

Controller controller = new Controller(); 
LeapEventListener listener = new LeapEventListener(); 

,並在公共Form1中()

string fingers = listener.frame; 
controller.AddListener(listener); 
label1.DataBindings.Add("Text", listener, "Frame"); 

所有工作都很好,直到我離開窗戶的焦點。如果我離開焦點,標籤文字不再改變,那麼我回到窗口焦點,標籤文本開始隨着來自聽衆的信息而改變。

爲什麼聽衆不工作,當我沒有窗口焦點?

回答

3

Leap API具有前景和後臺應用程序的概念。默認情況下,只有前臺應用程序接收跟蹤數據。這是爲了防止您的應用程序在用戶與其他應用程序進行交互時接收輸入。

如果您確實需要在後臺使用相框 - 並確定它不會導致問題 - 您可以請求背景相框政策:Foreground and Background Applications

啓用此策略將在另一個非Leap應用程序獲得焦點時獲取框架。如果您在啓用了Leap的應用程序時需要框架,則可以使用一個未記錄的策略標誌(1 < < 15)。