javascript - Aframe 版本 0.8.2 中注册的组件单击事件和 master 不起作用

标签 javascript aframe

我在之前版本的 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/

相关文章:

javascript - 使用 Plyr.io,一旦视频结束 - 重启播放器

javascript - 如何加载不同的HTML文件来创建不同的场景/VR世界?

javascript - 使用 React 的动态表

javascript - Mozilla AFRAME a-frame 通过按钮单击而不是击键启动检查器

aframe - 如何加载obj的纹理?

javascript - 如何从 A-Frame 上的 GLB 3D 对象获取动画剪辑的名称?

aframe - A型帧 : How to open a dynamically created a-link in a _blank page

javascript - 使用小型 Bootstrap 模态的超大背景模态

javascript - jQuery - 变量范围问题 "value assigned is never used"

javascript - 这个js怎么知道$get是function(id) { return document.getElementById(id); }