我在之前版本的 Aframe 0.8.0 中使用了这个确切的代码,并且点击工作正常。 但是,当我尝试使用 0.8.2 或主版本时,它没有显示点击迹象,也没有显示任何错误
这是我注册的组件,我想检测对其附加的实体的点击
AFRAME.registerComponent('change-color-on-hover', {
init: function () {
var data = this.data;
var el = this.el; // <a-box>
var defaultColor = el.getAttribute('material').color;
/**
* Attach 'click' event
*/
el.addEventListener('click', function () {
alert('clicked');
});
}});
我想要检测点击的元素(我稍后设置它的位置,它们出现在应该出现的位置)
<a-image position="" src="#blue_target_rendered" height="30" width="40" depth="1" shadow event-set__click="_event: click; color:black" change-color-on-hover look-at="[camera]" id="hotspot-{{$hotspot->id}}" data-link-to="{{$hotspot->link_to}}" data-link-from="{{$hotspot->link_from}}">
最佳答案
使用这样的设置:
<a-entity id="cameraParent" position="0 0 0" >
<a-entity id="cam" camera="zoom:1;" look-controls collider-check position="0 0 0" >
<a-entity cursor=" rayOrigin: mouse" geometry="primitive: ring; radiusInner: 0; radiusOuter: 0" material="color: black; shader: flat"></a-entity>
<a-entity raycaster="showLine: true; far: 1000"></a-entity>
</a-entity>
</a-entity>
由 raycaster
创建的 line
组件会干扰 cursor = rayOrigin: mouse
发出的光线。换句话说,您每次点击时都会点击带有line
的元素。
如果稍微重新定位raycaster
:
<a-entity position="0 -0.1 0" raycaster="showLine:true; far: 1000"></a-entity>
鼠标光标应该可以正常工作。
关于javascript - Aframe 版本 0.8.2 中注册的组件单击事件和 master 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53447669/