es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AFrame: Obtén el ID del marcador cuando se active el listener markerFound.

Tengo una escena de realidad aumentada con varios marcadores que muestran diferentes modelos 3D cuando se activan.
Así es como se ve:

<a-scene embedded="" arjs="">
    <a-marker markerhandler="" preset="custom" type="pattern" url="Target1.patt" id="1">
        <a-image src="image1.jpg"></a-image>
    </a-marker>
    <a-marker markerhandler="" preset="custom" type="pattern" url="Target2.patt" id="2">
        <a-image src="image2.jpg"></a-image>
    </a-marker>
    <a-entity camera=""></a-entity>
</a-scene>

Y aquí está el script asociado:

<script>
AFRAME.registerComponent('markerhandler', {
    init: function () {
        this.el.sceneEl.addEventListener('markerFound', (e) => {
            alert(this.id); //Esto mostrará el id ("1" o "2" en el ejemplo)
        })
    }
});
</script>

¿Cómo puedo reconocer qué objetivo se activa y obtener su id? He intentado de todo y me estoy volviendo loco, cualquier ayuda es apreciada. ¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para reconocer qué objetivo se activa y obtener el ID, puedes utilizar el evento “markerFound” y el atributo “id” en el componente “markerhandler”. En el script proporcionado, se puede acceder al ID del marcador utilizando “this.id” dentro de la función del escuchador de eventos. Entonces, el script actualizado debería lucir de la siguiente manera:

    <script>
    AFRAME.registerComponent('markerhandler', {
        init: function () {
          this.el.sceneEl.addEventListener('markerFound', (e) => {
              alert(this.el.getAttribute('id')); // Esto debería mostrar el id ("1" o "2" en el ejemplo)
          })
        }
      });
    </script>
    

    En lugar de utilizar “this.id”, ahora estamos usando “this.el.getAttribute(‘id’)” para obtener el ID del elemento del marcador. Esto mostrará el ID correspondiente del marcador cuando se detecte.

Comments are closed.