使用Surface pro 触摸屏选择查看器中的元素有时可能会转换为旋转/缩放操作。在这种情况下,观察者旋转/移动并且未选择元素。
当记录事件时,有许多鼠标向下/向上事件以及鼠标移动时它们不起作用。当select运行时,会发生单击事件。
双击似乎工作正常。 使用标准工具缩放/旋转等工作正常。
使用键盘盖触摸板,Surface Pro可以移动并单击按预期工作,并选择元素。
在GETAC Windows 10 ruggadised平板电脑上运行相同的应用程序,select元素正常工作,因此它似乎与Surface Pro相关。
无法更改浏览器,因为cordova应用程序在Windows上使用IE11并且目前已修复。
目前我能想到的唯一解决方案是完全删除标准导航工具(以某种方式)并重新创建一个选择模式工具,该工具将忽略任何鼠标移动并使用按钮按下事件来选择元素。
有关如何解决此问题的任何建议?
技术细节: Windows 10 Pro, Surface Pro, 浏览器:IE11, Viewer版本2.11, 其他:WINJS81 cordova应用
感谢您的帮助
答案 0 :(得分:0)
我们过去在Surface Pro上遇到过触摸事件的问题。听起来像触摸屏的边缘过于敏感,并触发额外的触摸点。
如果你拿着设备,用一只手抓住,用另一只手触摸/选择一个3D物体,问题是否会发生?
你可以尝试再次选择,但这一次,确保你的另一只手没有抓住屏幕边缘? (也许将设备放在桌子的表面上,所以你不要把它拿起来)
答案 1 :(得分:0)
找到了解决此问题的方法。在基础工具控制器的viewer3D中有行
var kClickThreshold = 2;
此值在代码中进一步使用,以确定是否发生了singleClick。它通过比较向下和向上事件的XY来实现。
var deltaX = _downX - event.canvasX;
var deltaY = _downY - event.canvasY;
_downX = -1;
_downY = -1;
if( Math.abs(deltaX) <= kClickThreshold && Math.abs(deltaY) <= kClickThreshold )
_this.handleSingleClick( event );
如果移动高于此阈值,则不会触发单击,如果低于此值。
测试并将值增加到5-7左右意味着元素的选择始终如一。 (在选择发生的同时仍然有一个小的旋转或缩放,但我认为这将是需要调整的观察者的另一部分)
不幸的是,它确实需要编辑查看器代码,但很容易。如果存在外部变量,我添加了代码来覆盖标准值。
如果更多这些类型的属性被暴露,那么对于未来的查看器开发将会很好,这样就不需要直接编辑代码。
让源代码能够在此级别进行调试仍然很好。
猜测Surface Pro 4必须具有更敏感的触控系统,或者它也可能与IE11有关。