private static void OnPan(object sender, PanArgs args) { float deltaX, deltaY; Clutter.Event evnt = null; if (args.IsInterpolated) { ((PanAction)sender).GetInterpolatedDelta(out deltaX, out deltaY); } else { ((GestureAction)sender).GetMotionDelta(0, out deltaX, out deltaY); evnt = ((GestureAction)sender).GetLastEvent(0); } Console.WriteLine(String.Format("[{0}] panning dx:{1:0.##} dy:{2:0.##}", evnt == null ? "INTERPOLATED" : evnt.Type() == Clutter.EventType.Motion ? "MOTION" : evnt.Type() == Clutter.EventType.TouchUpdate ? "TOUCH UPDATE" : "?", deltaX, deltaY)); args.RetVal = true; }
public static Event GetEvent(IntPtr raw) { if (raw == IntPtr.Zero) { return(null); } Event evnt = new Event(raw); switch (evnt.Type()) { case EventType.KeyPress: case EventType.KeyRelease: return(new KeyEvent(raw)); case EventType.ButtonPress: case EventType.ButtonRelease: return(new ButtonEvent(raw)); case EventType.Motion: return(new MotionEvent(raw)); case EventType.TouchBegin: case EventType.TouchCancel: case EventType.TouchEnd: case EventType.TouchUpdate: return(new TouchEvent(raw)); case EventType.StageState: return(new StageStateEvent(raw)); case EventType.Enter: case EventType.Leave: return(new CrossingEvent(raw)); case EventType.Scroll: return(new ScrollEvent(raw)); } return(evnt); }