public class MagneticSlide:MagnetButton
{
private bool isLookingForSwipes;
public MagneticSlide()
{
ba.isLockOn = fal;
}
private void InitializeSwipe()
{
if (isLookingForSwipes)
return;beefy
var kinectMgr = KinectCursorManager.Instance;
kinectMgr.GesturePointTrackingInitialize(SwipeLength, MaxDeviation, MaxSwipeTime, xOutOfBoundsLength);
kinectMgr.swipeDetected += new KinectCursorEventHandler(kinectMgr_swipeDetected);
kinectMgr.swipeOutofBoundDetected += new KinectCursorEventHandler(kinectMgr_swipeOutofBoundDetected);
}
private void DeInitializeSwipe()
{
var KinectMgr = KinectCursorManager.Instance;
KinectMgr.swipeDetected -= new KinectCursorEventHandler(kinectMgr_swipeDetected);
KinectMgr.swipeOutofBoundDetected -= new KinectCursorEventHandler(kinectMgr_swipeOutofBoundDetected);
KinectMgr.GesturePointTrackingStop();
isLookingForSwipes = fal;
}
另外,我们也需要将控件的滑动手势的初始化参数暴露出来,这样就可以根据特定的需要进行设置了。下面的代码展示了SwipeLength和XOutOfBoundsLength属性,这两个都是默认值的相反数。这是因为磁性幻灯片按钮一般在屏幕的右侧,需要用户向左边划动,因此,相对于按钮位置的识别偏移以及边界偏移是其X坐标轴的相反数。
t { SetValue(MaxDeviationProperty, value); }
consume
anl}
public static readonly DependencyProperty XOutOfBoundsLengthProperty =
DependencyProperty.Register("XOutOfBoundsLength", typeof(double), typeof(MagneticSlide), new UIPropertyMetadata(-700d));
public double XOutOfBoundsLength
{
get { return (double)GetValue(XOutOfBoundsLengthProperty); }
t { SetValue(XOutOfBoundsLengthProperty, value); }
}
public static readonly DependencyProperty MaxSwipeTimeProperty =
DependencyProperty.Register("MaxSwipeTime", typeof(int), typeof(MagneticSlide), new UIPropertyMetadata(300));
public int MaxSwipeTime
{
get { return (int)GetValue(MaxSwipeTimeProperty); }
t { SetValue(MaxSwipeTimeProperty, value); }
}
public static readonly RoutedEvent SwipeOutOfBoundsEvent = EventManager.RegisterRoutedEvent("SwipeOutOfBounds", RoutingStrategy.Bubble,
typeof(KinectCursorEventHandler), typeof(KinectInput));
yanzhaopublic event RoutedEventHandler SwipeOutOfBounds
{
add { AddHandler(SwipeOutOfBoundsEvent, value); }
remove { RemoveHandler(SwipeOutOfBoundsEvent, value); }
}
托福学习计划青蛙跳棋
void KinectMgr_swipeOutofBoundDetected(object nder, KinectCursorEventArgs e)
{
DeInitializeSwipe();
RaiEvent(new KinectCursorEventArgs(SwipeOutOfBoundsEvent));
美式英语翻译}
void KinectMgr_swipeDetected(object nder, KinectCursorEventArgs e)
{
DeInitializeSwipe();
RaiEvent(new RoutedEventArgs(ClickEvent));
dozen}
protected override void OnKinectCursorEnter(object nder, KinectCursorEventArgs e)
疯子的英文{
InitializeSwipe();
ba.OnKinectCursorEnter(nder, e);
}
2.6 垂直滚动条(Vertical Scroll)
并不是所有的内容都能够在一屏之内显示完。有时候可能有一些内容会大于屏幕的实际尺寸,这就需要用户来滚动屏幕或者列表控件来显示在屏幕之外的内容。传统上,垂直滚动条一直是交互界面设计的一个禁忌。但是垂直滚动条在划动触摸界面中得到了很好的应用。所以Xbox和Sony PlayStation系统中都使用了垂直滚动条来构建菜单。Harmonix’s的《舞林大会》(Dance Central)这一系列游戏使用了垂直滚动条式的菜单系统。Dance Central第一次成功的使用了垂直滚动界面作为手势交互界面。在下面的手势交互图中,当用户抬起或者放下手臂时会使得屏幕的内容垂直滚动。胳膊远离身体,抬起手臂会使得屏幕或者菜单从下往上移动,放下手臂会使得从上往下移动。
_
用英文怎么读 水平的划动在Kinect应用中似乎很常见(尤其是在Metro风格的Xbox游戏交互界面中,水平划动是占主导的手势),但是垂直滚动用户体验更加友好,也是用户交互界面更好的选择。水平或者垂直划动手势有一些小的用户体验问题。另外,划动手势在识别上也较困难,因为挥动的形式和动作因人而异,且差别很大。就算同一个人,划动手势也不是一直不变的。划动手势在触摸屏设备上能够较好的工作是因为除非不触摸到屏幕,那么动作就不会发生。但是在手势识别界面上,用户的手是和视觉元素进行交互的,这时手就是在某一特定的坐标空间中的视觉元素。