Mostrar los cursores de los sujetos: Demostración de múltiples usuarios
Descripción general
En un experimento de múltiples usuarios donde varios participantes están tomando parte en el experimento en tiempo real, puede que desee hacer que sus cursores sean visibles entre sí. En esta demostración, le mostraremos cómo configurarlo.

Nota sobre la implementación
Tenga en cuenta que hay varios enfoques que puede implementar para compartir las ubicaciones del cursor de múltiples participantes en Labvanced, ya que la plataforma es flexible y, por lo tanto, es importante considerar su diseño experimental antes de comprometerse con un enfoque.
Para dejar esto claro, presentaremos dos enfoques para lograrlo:
- Enfoque 1: una demostración que utiliza arreglos para distribuir la posición del cursor
- Enfoque 2: en una sección más adelante, discutiremos una demostración donde se pueden usar valores únicos para coordenadas x e y.
Enfoque 1: Visualización del cursor usando seguimiento del mouse y arreglos
Esta demostración incluye dos objetos (un mouse por usuario) y se enumeran en el panel lateral en el panel de Objetos. Este enfoque se puede utilizar para estudios de múltiples usuarios donde hay 2 o más participantes.
Objetos
Abajo se encuentra el Object Properties panel donde se puede manejar todo el estilo visual. Actualmente, ambos cursores tienen un Visibility de 1 (esto significa opacidad = 100%) como se muestra a continuación:

Para esta demostración, cambiaremos el Visibility a 0, como se muestra a continuación. Más adelante, cuando comience el experimento, haremos que uno de los cursores sea visible. es decir, si usted es el Participante 1, entonces verá el objeto cursor aquí del Participante 2 y viceversa. Esto se describe en la sección Evento: Init a continuación.

Si no desea tener dos objetos para los cursores, consulte esta sección para ver un método alternativo con solo un objeto cursor.
Variables personalizadas
Aquí enumeramos todas las variables personalizadas que se crearon con el propósito de esta demostración. Puede crearlas con antelación o dentro del editor mientras construye su experimento.

Descripción general de eventos
Para agregar un evento, haga clic en el [+] Frame Event (on this frame only).
Tenemos los siguientes eventos en esta demostración:
- Evento: Init: Haciendo visible el mouse del otro participante
- Evento: sendMove: Enviando las coordenadas del mouse
- Evento: receiveMove: Recibiendo las coordenadas del mouse
A continuación, se describe la estructura de cada uno de los eventos.
EVENTO: init
Este evento especifica lo que sucederá cuando se inicie el marco. En este caso, nuestro objetivo es que el Participante 1 vea el mouse del Participante 2 y viceversa.
Disparador
El disparador para el evento es On Frame Init porque queremos asignar la visibilidad del objeto cursor tan pronto como se inicializa el marco.

Acción
Después de especificar esto y hacer clic en el botón 'Siguiente', puede seleccionar las acciones que ocurrirán al inicializar el marco.
A continuación, mostramos que la acción que utilizamos es una Acción de Control → ‘Si... Entonces’, así que:
- Si
Role_Ides igual a 1 (Nota: Role_Id es una variable que es única para estudios de múltiples usuarios y asigna al participante su ID). - Entonces,
Set Object Propertyde lamouse_user_2del objetoVisibilityserá 1. - Nota: La combinación de estas dos acciones esencialmente significa: "Si usted es el Participante 1 (Role_Id==1), entonces verá el objeto mouse_user_2."
- Nota: ¿Cómo se especifica el
Role_Id == 1en el editor? Consulte la sección paso a paso a continuación donde se explica con más detalle.

Bajo la sección Else If hacemos lo mismo pero para el participante 2 (Role_Id==2). El objeto objetivo es mouse_user_1 que debería tener el valor Visibility de 1.

EVENTO: sendMove
A continuación, tenemos que establecer un ‘puente’ entre los dos participantes donde si mueve su mouse, esos valores son rastreados/almacenados y enviados al otro participante.
Disparador
Por lo tanto, se utiliza el Mouse trigger para este evento donde cualquier ‘Movimiento’ que se realice activará el evento.

Acciones
De nuevo, se necesita un comando Control Action → If…Then:


Donde si su Role_Id==1, entonces se llevan a cabo los siguientes Variable Actions:
Set / Record a Variable: Apunte / defina la variablemoveMouse1y configúrela para que sea igual al valor específico del disparador deMouse [X,Y] Array.Distribute Variable:Comparta esta variable con el Participante 2.
De lo contrario, si su Role_Id==2 …

Entonces:
- La
moveMouse2registrará el arreglo Mouse [X,Y] (justo como en el ejemplo anterior) pero lo usaremos para almacenar los valores de seguimiento del mouse del Participante 2 y configurarlo para que sea igual a su arreglo Mouse [X,Y]. - Luego, distribuya esta variable al participante 1.

Resumen- Hasta este punto hemos:
- Creado variables para almacenar el arreglo de seguimiento del mouse [X,Y] de cada participante (moveMouse1 para el cursor del Participante 1 y moveMouse2 para el cursor del Participante 2)
- Y hemos establecido un puente donde el valor de seguimiento del mouse se envía al otro participante utilizando la acción Distribute Variable.
EVENT: receiveMove
A continuación, necesitamos especificar qué sucederá con estos valores de seguimiento del ratón. En este caso, al recibir los movimientos del ratón en formato de matriz, queremos cambiar el objeto del cursor del ratón para reflejar los movimientos. ¡En otras palabras, usando la matriz [X,Y], vincularemos esos valores al cursor del ratón para que, en esencia, se mueva, mostrando lo que el otro participante está haciendo en la pantalla! Así, para lograr esto, se utilizarán el disparador y las acciones descritos a continuación.
Trigger
Dado que los valores de seguimiento del ratón se están almacenando en variables, cada vez que estas variables cambian, significa que el ratón se está moviendo. Por lo tanto, podemos usar el Variable Value Changed trigger para actualizar la ubicación del cursor en la pantalla seleccionando las dos variables específicas que contienen los valores de seguimiento del ratón, como se muestra a continuación:

Action
A continuación, queremos utilizar la Select From Array (Read) action para obtener los valores de las coordenadas x e y de las matrices de variables del cursor porque planeamos usarlos para establecer las coordenadas del objeto.
Así, seleccionamos la variable moveMouse1 que tiene la matriz de [X,Y] del participante 1 y llamamos al primer valor, que era un Fixed Index de 1 y almacenamos ese valor en una variable numérica llamada x_mouse1, porque los valores x están listados en primer lugar en la matriz.

Agregamos otra Select From Array (Read) action y para el Fixed Index escribimos 2 porque queremos llamar al segundo valor de la matriz, que son las coordenadas y y almacenarlo en la variable y_mouse1.
Para hacer que la imagen del cursor se mueva, necesitamos actualizar sus coordenadas de imagen en tiempo real haciéndola adoptar los valores x e y que son equivalentes a las coordenadas x e y del seguimiento del ratón (que hemos obtenido y almacenado en las variables x_mouse1 y y_mouse1 en las acciones anteriores).
Para lograr esto, necesitamos elegir la Set Object Property action para que el Target del mouse_user_1 (en la imagen a continuación se escribe simplemente como ‘ratón’ porque el cuadro de diálogo acorta el título) y su propiedad X tiene un valor (=) de x_mouse1+5, que es una operación aritmética. Consulte esta explicación paso a paso de cómo se configura esto.

En este punto, te estarás preguntando por qué aparece el +5 en el campo de entrada... Esto se debe a que necesitamos crear un desplazamiento, ya que este objeto es en realidad un objeto de texto que incluye una imagen incrustada (como se describe al principio de este recorrido). Por lo tanto, si necesitas construir tu estudio y hacer que los usuarios vean sus propios cursores personalizados como lo hacemos aquí, pero también hacer clic en otros objetos en el estudio, entonces no será posible a menos que crees este desplazamiento (a menos que decidas omitir la imagen del cursor y mantener solo la etiqueta de texto).
Continuando, elegimos +Add Property y apuntamos al mismo objeto de imagen, seleccionamos la propiedad Y y la establecemos igual a la variable y_mouse1.
Repetimos el mismo proceso pero solo seleccionamos las otras variables que hemos dedicado para el participante 2:

Aquí apuntamos al objeto mouse_user_2 y asignamos las respectivas variables:

Juntas, todas estas acciones hacen que los dos objetos del cursor se muevan para ambos participantes al leer los valores de la variable de matriz y luego usar estos valores numéricos para establecer los valores x e y del objeto.
EVENT: end
A continuación, creamos un evento para finalizar oficialmente el proceso de grabación de datos y almacenar los datos al insertar un botón de ‘fin’ que, cuando se utiliza como un disparador, llevará a una acción de Control donde tiene lugar la acción Accept/End Session.
Trigger
Para finalizar la sesión, el disparador del botón es donde hacer clic en el End Button hará que la sesión finalice.

Action
La acción es Aceptar/Finalizar sesión.

Nuevamente, ten en cuenta que esta demostración es con fines de aprendizaje y es solo un método entre muchos para compartir la ubicación del ratón y del cursor en un entorno de estudio multiusuario. Otro ejemplo de cómo se puede lograr este efecto se describe en las secciones siguientes.
Enfoque 2: Enfoque de Variable Única para Compartir Cursores en Estudios Multiusuario
En esta otra demostración, en lugar de matrices, mostramos cómo tienes la opción de usar valores individuales (es decir, llamando directamente a las coordenadas X e Y).

Aquí hay una vista previa completa de esta demostración, que incluye una vista previa de los datos grabados al final:
Objeto Único para el Cursor
Esta demostración también difiere de la anterior en el sentido de que en lugar de dos objetos para el cursor, solo hay uno. Este enfoque es excelente para estudios multiusuario que solo quieren mostrar dónde se encuentra el cursor del ‘oponente’ o ‘compañero de equipo’.

Variables Personalizadas
Esta otra demostración incluye las siguientes variables personalizadas y sus especificaciones. Mientras que esta demostración tiene menos variables, requiere más eventos/acciones que se utilizan en comparación con el ejemplo anterior con matrices.

EVENT: sendMove
El disparador es el movimiento del ratón:

La acción es registrar los valores específicos del disparador de las coordenadas X e Y del ratón en dos variables separadas que están específicamente nombradas para indicar al participante 1.

Las siguientes acciones bajo esta condición si/entonces sirven para distribuir estos dos valores al participante 2.

Luego, agregamos una condición de 'Else If' para registrar los valores específicos del desencadenador de la coordenada X del mouse y la coordenada Y en dos variables separadas que están específicamente nombradas para indicar al participante 2.

Las siguientes acciones se utilizan para distribuir estos dos valores al participante 1.

EVENTO: receiveMove1
Ahora necesitamos un evento para transmitir las coordenadas del mouse. Así, si estos valores de variable específicos asociados al Participante 1 cambian, se utilizarán como un desencadenante:

Luego, actualizamos la propiedad del objeto de ubicación del cursor para que tome estos valores usando una acción. En esencia, si eres el Participante 2, entonces el objeto Oponente toma las coordenadas de las variables del Participante 1:

EVENTO: receiveMove2
Hacemos lo mismo aquí. Si eres el Participante 1, entonces el objeto Oponente toma las coordenadas de las variables del Participante 2:


Conclusión
Esta demostración muestra dos de las muchas formas en que las coordenadas del mouse pueden ser utilizadas para actualizar propiedades de objetos con el fin de transmitir la ubicación del cursor en un estudio de múltiples usuarios. Puedes utilizar arreglos.
Detalles de la Demostración: Ingresando Valores Paso a Paso
Si todavía te estás familiarizando con Labvanced o solo necesitas una aclaración extra, las secciones a continuación te muestran, paso a paso, cómo implementar ciertos comandos y los pasos que debes seguir usando los menús para implementarlos:
- Especificando
Role_ID==1en una Acción de Requisito - Seleccionando el Array de Mouse [X,Y] para ser Registrado en una Variable para Seguimiento del Mouse
- Usando Operaciones Aritméticas para Establecer una Propiedad de Objeto
Especificando Role_ID==1 en una Acción de Requisito
En la demostración anterior, esta línea aparece con frecuencia, así que ¿cómo puedes lograr que sea así?

Primero +Add Action y Acciones de Control de Selección → Acciones de Requisito (Si...Entonces) porque este es el contexto en el que aparece con frecuencia en esta demostración.

A continuación, + Requirement para que puedas especificar la Condición If con mayor detalle.
Para el primer ícono de lápiz (formalmente conocido como El Menú de Selección de Valor), elige Variable → Select Variable para apuntar a la variable Role_Id.

Esto abrirá el menú de Variables donde se almacenan todas las variables locales / globales. En el panel superior, bajo Global Variables encontrarás la variable Role_Id. Selecciónala.

A continuación, en el otro ícono de bolígrafo, necesitas especificar el valor del id de rol del participante. Así que ve a Valor Constante → Numérico.

Y simplemente escribe el número 1. ¡Ta-da!

Usando Operaciones Aritméticas para Establecer una Propiedad de Objeto
Establecer la ubicación del cursor se hace usando la acción Establecer Propiedad de Objeto, especificando el objeto objetivo, su propiedad y luego especificando el valor de la variable que se utilizará como el nuevo valor para la propiedad del objeto.

Selecciona la Acción de Objeto:

Para el Target haz clic en el primer none y selecciona el primer objeto cursor mouse_user_1 de la lista. Para la segunda lista de las propiedades del objeto, selecciona la opción X:

Luego, haz clic en el ícono del bolígrafo. Elige Operations del menú y selecciona la opción Arithmetic:

Haz clic en el primer ícono de lápiz y elige Variable → Select Variable y aparecerá un cuadro de diálogo de las variables desde las que puedes seleccionar la variable x_mouse1:

Luego, haz clic en el segundo ícono de lápiz y elige Constant Value → Numeric y escribe el número 5 en el campo que aparece.

Como esto se relaciona con la demostración donde el objeto es una combinación de una imagen más texto, necesitamos compensar el valor en 5 puntos para que el objeto de abajo sea clickeable:

Haz clic en el +Add Property debajo e indica que la variable y_mouse1 será asignada a la propiedad del objeto Y del objeto mouse_user_1.
