Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/windows-phone-8/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 如何同时检测两次触摸?_Windows Phone 8_Winrt Xaml - Fatal编程技术网

Windows phone 8 如何同时检测两次触摸?

Windows phone 8 如何同时检测两次触摸?,windows-phone-8,winrt-xaml,Windows Phone 8,Winrt Xaml,在Windows Phone 8中检测触摸利用System.Windows.Input.touch.FrameReported事件,这是开发人员可用的最原始、当然也是响应最快的触摸事件 您可以这样使用事件: public主页() { 初始化组件(); //设置声音 Ellipse1.Tag=新Uri(“Sounds/GVD_snr1.wav”,UriKind.Relative); Tag=newURI(“Sounds/GVD_snr2.wav”,UriKind.Relative); Tag=ne

在Windows Phone 8中检测触摸利用System.Windows.Input.touch.FrameReported事件,这是开发人员可用的最原始、当然也是响应最快的触摸事件

您可以这样使用事件:

public主页()
{
初始化组件();
//设置声音
Ellipse1.Tag=新Uri(“Sounds/GVD_snr1.wav”,UriKind.Relative);
Tag=newURI(“Sounds/GVD_snr2.wav”,UriKind.Relative);
Tag=newURI(“Sounds/GVD_snr3.wav”,UriKind.Relative);
Tag=newURI(“Sounds/GVD_snr4.wav”,UriKind.Relative);
Ellipse5.Tag=新Uri(“Sounds/GVD_snr5.wav”,UriKind.Relative);
Tag=newURI(“Sounds/GVD_snr6.wav”,UriKind.Relative);
Ellipse7.Tag=新Uri(“Sounds/Gong.wav”,UriKind.Relative);
//响应触摸(es)
var_ellipes=new[]{Ellipse1,Ellipse2,Ellipse3,Ellipse4,Ellipse5,Ellipse6,Ellipse7};
System.Windows.Input.Touch.FrameReported+=(s,e)=>
{
var_接触=
从e.GetTouchPoints中的触摸(空)
其中touch.Action==System.Windows.Input.TouchAction.Down
让椭圆=touch.TouchDevice.DirectlyOver为椭圆
其中_ellipes.Contains(椭圆)
选择椭圆;
System.Diagnostics.Debug.WriteLine(“{0}touch(es)。”,_touch.Count());
foreach(变量椭圆在_接触)
{
var _Stream=Application.GetResourceStream(椭圆标记为Uri).Stream;
var\u SoundEffect=Microsoft.Xna.Framework.Audio.SoundEffect.FromStream(\u Stream);
Microsoft.Xna.FrameworkDispatcher.Update();
_音效。播放();
}
};
}
(使用Lumia 920进行测试)

这就像一种魅力——只要一次只有一次触摸。当用户试图同时触摸两个或多个点时(我指的是完全相同的时间),根本不会引发事件。当用户尝试几乎同时触摸两个或多个点(仅相隔一秒)时,将引发事件并报告两个点

如何检测两次同时触摸?

如果您想查看XAML,以下是XAML:


添加此选项解决了问题:

var _Timer = new DispatcherTimer { Interval = TimeSpan.FromMilliseconds(50) };
_Timer.Tick += (s, e) =>
{
    try { Microsoft.Xna.Framework.FrameworkDispatcher.Update(); }
    catch { }
};
_Timer.Start();

@杰瑞。。你试过这个吗?在实例变量中打勾lastTappedTime。处理所有省略号中的点击事件,并检查lastTappedTime和now time之间的差异。如果差异小于200毫秒,我们可以安全地考虑它的SIMUL触摸,否则设置新的持续时间。更清楚的是,问题不是检测它们是否同时发生,而是两个同时触摸不引发FrimeApple事件。谢谢澄清。