我就是用控制台应用来说一下吧。
获取坐标也就是对他自身的Listener的OnFrame事件的重写。
在重写Listener时最好不要直接用Console.WriteLine因为他用的是多线程,直接使用可能会导致线程冲突。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Leap;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Controller leap = new Controller();
alistener listener = new alistener();
leap.AddListener(listener);
//Console.WriteLine(leap.Devices[0]);
Console.WriteLine("Press Enter to quit...");
Console.ReadLine(); // Keep this process running until Enter is pressed
leap.RemoveListener(listener);
leap.Dispose();
}
}
public class alistener : Listener
{
Object thislock = new Object();
void safewriteline(string line)
{
lock (thislock)
{
Console.WriteLine(line);
}
}
public override void OnConnect(Controller arg0)
{
safewriteline("Conectted");
}
public override void OnFrame(Controller arg0)
{
Frame frame = arg0.Frame();
HandList hlist = frame.Hands;
Hand hand1 = hlist[0];
safewriteline(hand1.PalmPosition.x.ToString() +" "+
hand1.PalmPosition.y.ToString()+" " +
hand1.PalmPosition.z.ToString());
Hand hand2 = hlist[1];
safewriteline(hand2.PalmPosition.x.ToString() + " " +
hand2.PalmPosition.y.ToString() + " " +
hand2.PalmPosition.z.ToString()+"\n");
//safewriteline(arg0.Frame().Id.ToString());
}
public override void OnInit(Controller arg0)
{
safewriteline("inti");
}
}
}