具有多个物体的A帧计分器 [英] A-frame score counter with multiple objects

查看:99
本文介绍了具有多个物体的A帧计分器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经看过以下答案:在A-中实现得分计数器框架

I've looked at this answer: Implementing a score counter in A-Frame

...,但无法弄清楚如何编写适用于多个对象的类似函数,因为querySelector仅找到第一个元素。

... but cannot figure out how to write a similar function that would work for multiple objects, since querySelector only finds the first element.

我正在尝试创建一个包含5-8个对象的场景,每个场景只能被单击一次。单击对象时,计数器将增加1。

I'm trying to create a scene with 5-8 objects, and each one can only be clicked once. When an object is clicked, the counter will increment by 1.

推荐答案

要么使用querySelectorAll:

Either use querySelectorAll:

var targets = querySelectorAll('a-box')`
for (var i = 0; i < targets.length; i++) {  // Add event listeners... }

但是更好,请使用容器

<a-entity listener>
  <a-box data-raycastable></a-box>
  <a-box data-raycastable></a-box>
</a-entity>
<a-entity cursor="rayOrigin: mouse" raycaster="objects: [data-raycastable]"></a-entity>

组件:

AFRAME.registerComponent('listener', {
  init: function () {
    this.el.addEventListener('click', evt => {
      if (evt.target.dataset.wasClicked) { return; }
      // evt.target tells you which was clicked.
      evt.target.dataset.wasClicked = true;
      // Score up.
    });
  }
});

作为补充,状态部分是存储您的分数的好地方。 https://www.npmjs.com/package/aframe-state-component

As a side note, state component is a great place to store your score. https://www.npmjs.com/package/aframe-state-component

这篇关于具有多个物体的A帧计分器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆