Aframe: eventos

Manejo de eventos en aframe.

Índice de contenidos

1. Introducción

Hola a todos, seguimos con la saga Aframe, en este capítulo veremos los eventos. Primero veremos como declararlos dentro de un componente, programaremos acciones a realizar cuando se cumplan ciertos eventos y finalmente los asociaremos a una entidad.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: MacBook Pro 2,5 GHz Intel Core i7. 16gb DDR3
  • Sistema Operativo: Mac OS Sierra 10.12
  • Entorno de desarrollo: Visual studio Code
  • node 8.0.0
  • npm 5.0.3

3. Eventos

Al igual que en la web en 2D, tenemos eventos. Los componentes usan los eventos para comunicarse, pueden lanzar eventos o estar a la escucha.

// `collide` evento emitido por un componente de una entidad al colisionar con otra.
document.querySelector('a-entity').addEventListener('collide', function (evt) {
 console.log('This A-Frame entity collided with another entity!');
});

4. Proyecto de Ejemplo

Generamos un nuevo proyecto. Con un index.html, añadimos la librería de aframe y dibujamos una caja.

index.html
<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <title>Cursor Handler - A-Frame School</title>
   <meta name="description" content="Cursor Handler - A-Frame School">
   <script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
   <script src="handle-events.js"></script>
   </script>
 </head>
 <body>
   <a-scene>
     <a-box color="#EF2D5E" position="0 1 -4" handle-events ></a-box>

     <a-camera><a-cursor></a-cursor></a-camera>
     <a-sky color="#333"></a-sky>
     <a-plane color="#000" rotation="-90 0 0" width="500" height="500"></a-plane>
   </a-scene>
 </body>

4.1. Componente con eventos

Ahora crearemos un componente donde añadiremos eventos. Este componente lo podremos añadir a entidades para que usen sus eventos. Generamos un fichero llamado handleEvents.js. Y añadimos el siguiente código:

AFRAME.registerComponent('handle-events', {
       init: function () {
         var el = this.el;  //
         el.addEventListener('mouseenter', function () {
           el.setAttribute('color', 'red');
           console.log("mouseenter");
         });
         el.addEventListener('mouseleave', function () {
           el.setAttribute('color', 'grey');
             console.log("mouseleave");
         });
         el.addEventListener('click', function () {
           el.setAttribute('scale', {x: numAleatorio(1,5), y: numAleatorio(1,3), z: numAleatorio(1,3)});
             console.log("click");
         });

         function numAleatorio(min, max) {
           return Math.round(Math.random() * (max - min) + min);
           }
       }
     });

Aquí podemos ver como la entidad que use este componente estará a la escucha de tres eventos: mouseenter, mouseleave y click. Para cada evento hemos programado un cambio en una de las propiedades de la entidad.

Cuando nos situemos encima de la entidad el atributo color se actualizará a rojo y la entidad reflejará este cambio. Al dejar la entidad su color pasará a coger el valor ‘gris’. Y si hacemos click sobre ella aumentará su tamaño aleatoriamente.

4.2. Asociar eventos a entidades

Para asociar este componente de eventos a una entidad solo tendremos que declararlo en la etiqueta de la entidad.

Añadimos el fichero handleEvents.js al fichero index.html y modificamos la entidad a-box para añadirle los eventos.

5. Conclusiones

Después de este tutorial, espero que vayáis viendo las posibilidades que se nos van presentando. En el siguiente tutorial veremos las animaciones.

No me faltéis.

Saludos.

6. Referencias

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

10/06/2025

Iván Suarez Romero

Aprende cómo migrar tu sitio Joomla 3 a Joomla 5 de forma segura, manteniendo el diseño, la funcionalidad y compatibilidad con extensiones. Una guía paso a paso con recomendaciones, imágenes y buenas prácticas para actualizar sin sorpresas.

04/06/2025

Gonzalo Matarrubia González

Descubre qué es Yocto Project, sus ventajas, usos reales en Izertis y cómo crear tu propia distribución Linux para Raspberry Pi paso a paso, de forma sencilla y flexible.

30/05/2025

Roberto José

¿Trabajas con Drupal y SonarQube 9.9? En este artículo exploramos cómo adaptar el análisis estático para evitar falsos positivos, desactivar reglas conflictivas del Quality Profile y delegar el estilo a PHP CodeSniffer. Una guía práctica para mejorar la integración sin depender aún de SonarQube 10.