通过使用IE 11(通过cordova)在Surface Pro上点击屏幕无法正常工作,Forge Viewer选择元素

时间:2017-06-23 06:34:32

标签: autodesk-forge autodesk-viewer

使用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应用

感谢您的帮助

2 个答案:

答案 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有关。