Блок предохранителей курсора работает, когда он не ожидается - PullRequest
0 голосов
/ 31 октября 2019

странное поведение с курсором предохранителя. Я установил fuse в false для курсора, как mainscene, так и a-cursor, но fuse по-прежнему появляется при наведении курсора.

Эта проблема возникает при тестировании на iOS, Android. С настольного браузера работает нормально.

<a-camera id="default_angle" camera  position="0 0 0" look-controls  wasd-controls>
<a-cursor>
 <!-- by default click should be not expected on hover object (fuse) -->
</a-cursor>
</a-camera>
...
<a-box id="motor" color="red" position="0 0 -5"></a-box>
<!-- on hover to this object from mobile fuse should not appear -->
...
  var motor = document.querySelector('#motor');
  motor.addEventListener('click', function (evt) {
   alert('clicked');  
  });

Пожалуйста, проверьте этот код ручки https://codepen.io/sevenspring/pen/XWWzNvK

Здесь можно подумать, что щелчки производятся прикосновением (касание на экране мобильного устройства) при наведении курсора на объект.

но вы можете проверить этот пример с гироскопом. https://parent.glitch.me в режиме vr мы можем навести курсор на кнопку «play / pause» при перемещении гироскопа, он все равно будет производить щелчки. https://glitch.com/edit/#!/join/d1afa869-dea2-47ec-9904-e851e451d832

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Ответ от Дана С. правильный. Когда мы используем без атрибута «курсор», событие fusing не запускается, как ожидается по умолчанию

0 голосов
/ 31 октября 2019

Здесь на самом деле существует ряд проблем.

Одна проблема заключается в том, что демонстрационная программа CodePen использует <a-cursor fuse="false" cursor></a-cursor>. По сути, это два курсора, поскольку вы добавляете второй в качестве компонента через cursor, который не был настроен.

Другая проблема заключается в том, что cursor по умолчанию перегорает на мобильном устройстве, если явно не установлено значениеcursor="fuse: false;"

Другая проблема заключается в том, что вы слушаете событие click, которое захватывает щелчок при наведении курсора мыши на объект.

Я полагаю, что fuse былпредназначен для click без щелчков, но также позволяет пользователям щелкать, если у них есть возможность.

Если вы хотите проверить, когда что-то слилось исключительно, вы можете попробовать прослушать fusing событие, а не click.

<a-cursor fuse="false"><a-cursor>

или

<a-entity cursor="fuse: false;">
  <!-- you will need to provide your own cursor geometry -->
<a-entity>

Тогда слушайте fusing:

this.el.addEventListener('fusing', function (e) {
 console.log(e);
});

Надеюсь, это поможет.

...