Zeige die Zeiger der Probanden: Multi-User-Demo
Übersicht
In einem Multi-User-Experiment, an dem mehrere Teilnehmer in Echtzeit teilnehmen, möchten Sie möglicherweise ihre Zeiger füreinander sichtbar machen. In dieser Demo zeigen wir Ihnen, wie Sie dies einrichten können.
Hinweis zur Implementierung
Bitte beachten Sie, dass es mehrere Ansätze gibt, um die Mauspositionen mehrerer Teilnehmer in Labvanced zu teilen, da die Plattform flexibel ist. Daher ist es wichtig, Ihr experimentelles Design zu berücksichtigen, bevor Sie sich für einen Ansatz entscheiden.
Um diesen Punkt klarzustellen, werden wir zwei Ansätze zur Umsetzung vorstellen:
- Ansatz 1: eine Demo, die Arrays verwendet zur Verteilung der Mausposition
- Ansatz 2: in einem weiter unten beschriebenen Abschnitt werden wir eine Demo diskutieren, in der Einzelwerte für x- und y-Koordinaten verwendet werden können
Ansatz 1: Zeigerdarstellung durch Mausverfolgung und Arrays
Diese Demo beinhaltet zwei Objekte (eine Maus pro Benutzer), die in der Seitenleiste im Objekt-Panel aufgeführt sind. Dieser Ansatz kann für Multi-User-Studien verwendet werden, bei denen es 2+ Teilnehmer gibt.
Objekte
Unten ist das Objekteigenschaften
Panel, in dem alle visuellen Stile festgelegt werden können. Derzeit haben beide Zeiger eine Sichtbarkeit
von 1 (das bedeutet Opazität =100%), wie unten gezeigt:
Für diese Demo werden wir die Sichtbarkeit
auf 0 ändern, wie unten gezeigt. Später, wenn das Experiment beginnt, werden wir einen der Zeiger sichtbar machen. Das heißt, wenn Sie Teilnehmer 1 sind, dann sehen Sie das Cursor-Objekt hier von Teilnehmer 2 und umgekehrt. Dies wird im Abschnitt Ereignis:Init weiter unten beschrieben.
Wenn Sie nicht zwei Objekte für die Zeiger haben möchten, verweisen Sie auf diesen Abschnitt, um eine alternative Methode mit nur einem einzelnen Cursor-Objekt zu sehen.
Benutzerdefinierte Variablen
Hier listen wir alle benutzerdefinierten Variablen auf, die für die Zwecke dieser Demo erstellt wurden. Sie können sie im Voraus erstellen oder im Editor während des Aufbaus Ihres Experiments erstellen.
Ereignisübersicht
Um ein Ereignis hinzuzufügen, klicken Sie auf [+] Rahmenereignis (nur auf diesem Rahmen)
.
In dieser Demo haben wir die folgenden Ereignisse:
- Ereignis:Init: Sichtbarmachen der Maus des anderen Teilnehmers
- Ereignis: sendMove: Senden der Mauskoordinaten
- Ereignis: receiveMove: Empfangen der Mauskoordinaten
Nachfolgend wird die Struktur für jedes der Ereignisse beschrieben.
EREIGNIS: init
Dieses Ereignis gibt an, was passiert, wenn der Rahmen initialisiert wird. In diesem Fall ist unser Ziel, dass Teilnehmer 1 die Maus von Teilnehmer 2 und umgekehrt sieht.
Auslöser
Der Auslöser für das Ereignis ist On Frame Init
, weil wir die Sichtbarkeit des Cursor-Objekts zuweisen wollen, sobald der Rahmen initialisiert wird.
Aktion
Nachdem dies angegeben wurde und Sie auf die Schaltfläche „Weiter“ klicken, können Sie die Aktionen auswählen, die bei der Rahmeninitialisierung erfolgen.
Unten zeigen wir, dass die von uns verwendete Aktion eine Steuerungsaktion → 'If… Then' ist, also:
- Wenn
Role_Id
gleich 1 ist (Hinweis: Role_Id ist eine Variable, die in Multi-User-Studien einzigartig ist und den Teilnehmer seine ID zuweist). - Dann
Set Object Property
dermouse_user_2
-ObjektsSichtbarkeit
auf 1. - Hinweis: Die Kombination dieser beiden Aktionen bedeutet im Wesentlichen: „Wenn Sie Teilnehmer 1 sind (Role_Id==1), dann sehen Sie das Objekt mouse_user_2.“
- Hinweis: Wie wird
Role_Id == 1
im Editor angegeben? Verweisen Sie auf den Schritt-für-Schritt-Abschnitt unten, wo dies detaillierter erklärt wird.
Im Abschnitt Sonst wenn
machen wir dasselbe, aber für Teilnehmer 2 (Role_Id==2). Das Zielobjekt ist mouse_user_1
, das den Wert Sichtbarkeit
von 1 haben sollte.
EREIGNIS: sendMove
Als Nächstes müssen wir eine „Brücke“ zwischen den beiden Teilnehmern herstellen, bei der, wenn Sie Ihre Maus bewegen, diese Werte verfolgt/gespeichert und an den anderen Teilnehmer gesendet werden.
Auslöser
Daher wird der Mausauslöser
für dieses Ereignis verwendet, bei dem jede „Bewegung“, die vorgenommen wird, das Ereignis auslöst.
Aktionen
Wieder wird eine Steuerungsaktion
→ If…Then
-Befehl benötigt:
Wenn Ihre Role_Id==1
, dann finden die folgenden Variablenaktionen
statt:
Set / Record a Variable
: Definieren Sie die VariablemoveMouse1
und setzen Sie sie gleich dem auslöserspezifischen Wert vonMaus [X,Y] Array
.Distribute Variable:
Teilen Sie diese Variable mit Teilnehmer 2.
Sonst wenn, Ihre Role_Id==2
…
Dann:
- Das
moveMouse2
wird das Maus [X,Y] Array erfassen (genauso wie im vorherigen Beispiel oben), aber wir werden es verwenden, um die Mausverfolgungswerte von Teilnehmer 2 zu speichern und auf ihr Maus [X,Y] Array gleich zu setzen. - Dann verteilen Sie diese Variable an Teilnehmer 1.
Zusammenfassung: Bis zu diesem Punkt haben wir:
- Variablen erstellt, um das Mausverfolgungs-[X,Y] Array jedes Teilnehmers (moveMouse1 für den Zeiger von Teilnehmer 1 und moveMouse2 für den Zeiger von Teilnehmer 2) zu speichern.
- Und eine Brücke etabliert, bei der der Mausverfolgungswert an den anderen Teilnehmer unter Verwendung der Distribute-Variable-Aktion gesendet wird.
EREIGNIS: receiveMove
Als Nächstes müssen wir festlegen, was mit diesen Mausverfolgungswerten passiert. In diesem Fall wollen wir, dass beim Empfangen der Mausbewegungen in Array-Format das Mauszeigerobjekt verändert wird, um die Bewegungen widerzuspiegeln! Mit anderen Worten, unter Zuhilfenahme des [X,Y] Arrays werden wir diese Werte mit dem Mauszeiger verbinden, sodass er sich im Wesentlichen bewegt und zeigt, was der andere Teilnehmer auf dem Bildschirm tut! Um dies zu erreichen, werden die unten beschriebenen Trigger und Aktionen verwendet.
Auslöser
Da die Mausverfolgungswerte in Variablen gespeichert werden, bedeutet jede Änderung dieser Variablen, dass sich die Maus bewegt. Daher können wir den Variable Value Changed
-Trigger verwenden, um die Cursorposition auf dem Bildschirm zu aktualisieren, indem wir die beiden spezifischen Variablen auswählen, die die Mausverfolgungswerte enthalten, wie unten gezeigt:
Aktion
Als Nächstes möchten wir die Select From Array (Read)
-Aktion verwenden, um die x- und y-Koordinatenwerte aus den Variablenarrays des Cursors abzurufen, da wir planen, sie zu verwenden, um die Koordinaten des Objekts festzulegen.
Daher wählen wir die Variable moveMouse1
, die das Array der [X,Y] von Teilnehmer 1 hat, und rufen den ersten Wert ab, der ein Fixed Index
von 1 war und speichern diesen Wert in einer numerischen Variablen namens x_mouse1
, da die x-Werte im Array an erster Stelle aufgeführt sind.
Wir fügen eine weitere Select From Array (Read)
-Aktion hinzu und schreiben für den Fixed Index
2, weil wir den zweiten Arraywert, der die y-Koordinaten darstellt, abrufen und in der y_mouse1
-Variablen speichern möchten.
Um das Cursorbild zu bewegen, müssen wir seine Bildkoordinaten in Echtzeit aktualisieren, indem wir ihm die x- und y-Werte geben, die den x- und y-Koordinaten der Mausverfolgung entsprechen (die wir abgerufen und in den Variablen x_mouse1
und y_mouse1
in den oben beschriebenen Aktionen gespeichert haben).
Um dies zu erreichen, müssen wir die Set Object Property
-Aktion auswählen, sodass der Ziel
des mouse_user_1
(im Bild unten als 'mouse' bezeichnet, da das Dialogfeld den Titel abkürzt) und seine Eigenschaft X
den Wert (=) x_mouse1
+5, was eine arithmetische Operation ist. Verweisen Sie auf diese Schritt-für-Schritt-Erklärung, wie dies eingerichtet wird.
Zu diesem Zeitpunkt fragen Sie sich vielleicht, warum die +5 im Eingabefeld erscheint... Das liegt daran, dass wir eine Verschiebung erstellen müssen, da dieses Objekt tatsächlich ein Textelement ist, das ein eingebettetes Bild enthält (wie zu Beginn dieses Leitfadens beschrieben). Wenn Sie also Ihre Studie erstellen und die Teilnehmer ihre eigenen benutzerdefinierten Zeiger sehen sollen, wie wir es hier tun, aber auch andere Objekte in der Studie anklicken möchten, ist dies nicht möglich, es sei denn, Sie erstellen diese Verschiebung (es sei denn, Sie entscheiden sich, das Bild des Cursors wegzulassen und nur das Textetikett beizubehalten).
Weiter geht's, wir wählen +Add Property
und weisen dem gleichen Bildobjekt die Y
-Eigenschaft zu und setzen sie gleich der Variablen y_mouse1
.
Wir wiederholen den gleichen Vorgang, wählen jedoch die anderen Variablen aus, die wir für Teilnehmer 2 festgelegt haben:
Hier weisen wir auf das Objekt mouse_user_2
und weisen die entsprechenden Variablen zu:
Zusammen sorgen all diese Aktionen dafür, dass sich die beiden Cursorobjekte für beide Teilnehmer bewegen, indem sie Werte aus der Arrayvariablen lesen und diese numerischen Werte verwenden, um die x- und y-Werte des Objekts einzustellen.
EREIGNIS: end
Als nächstes erstellen wir ein Ereignis, um den Datenerfassungsprozess offiziell zu beenden und die Daten zu speichern, indem wir einen „Ende“-Button einfügen, der als Auslöser verwendet wird und zu einer Steuerungsaktion führt, bei der die Aktion Akzeptieren/Session beenden
erfolgt.
Auslöser
Um die Sitzung zu beenden, ist der Buttonauslöser, bei dem das Klicken auf den End-Button
die Sitzung beendet.
Aktion
Die Aktion ist Akzeptieren/Session beenden.
Bitte beachten Sie, dass diese Demo zu Lernzwecken dient und nur eine von vielen Methoden zum Teilen der Maus- und Cursorposition in einer Multi-User-Studienumgebung ist. Ein weiteres Beispiel, wie dieser Effekt erreicht werden kann, wird in den kommenden Abschnitten beschrieben.
Ansatz 2: Einzelvariablenansatz für das Teilen von Cursorn in Multi-User-Studien
In dieser anderen Demo zeigen wir, wie Sie anstelle von Arrays die Option haben, Einzelwerte (d. h. direkt auf X- und Y-Koordinaten zuzugreifen) zu verwenden.
Hier ist eine vollständige Vorschau dieser Demo, einschließlich einer Vorschau der am Ende erfassten Daten:
Einzelobjekt für den Cursor
Diese Demo unterscheidet sich auch von der vorherigen, da es anstelle von zwei Objekten für den Cursor nur eines gibt. Dieser Ansatz ist ideal für Multi-User-Studien, die nur zeigen möchten, wo sich der Cursor des „Gegners“ oder „Teamkollegen“ befindet.
Benutzerdefinierte Variablen
Diese andere Demo umfasst die folgenden benutzerdefinierten Variablen und deren Spezifikationen. Während diese Demo weniger Variablen hat, erfordert sie mehr Ereignisse/Aktionen als das vorherige Beispiel mit Arrays.
EREIGNIS: sendMove
Der Auslöser ist die Mausbewegung:
Die Aktion besteht darin, die auslöserspezifischen Werte der Maus-X-Koordinate und Y-Koordinate in zwei separaten Variablen aufzuzeichnen, die speziell benannt sind, um Teilnehmer 1 anzuzeigen.
Die nächsten Aktionen unter dieser Wenn/Dann-Bedingung dienen dazu, diese beiden Werte an Teilnehmer 2 zu verteilen.
Dann fügen wir eine „Sonst wenn“-Bedingung hinzu, um die auslöserspezifischen Werte der Maus-X-Koordinate und Y-Koordinate in zwei separaten Variablen aufzuzeichnen, die speziell benannt sind, um Teilnehmer 2 anzuzeigen.
Die nächsten Aktionen werden verwendet, um diese beiden Werte an Teilnehmer 1 zu verteilen.
EREIGNIS: receiveMove1
Jetzt benötigen wir ein Ereignis, um die Mauskoordinaten zu übertragen. Wenn sich also diese spezifischen Variablenwerte, die mit Teilnehmer 1 verbunden sind, ändern, werden sie als Auslöser verwendet:
Dann aktualisieren wir den Objektstatus des Cursors, um diese Werte mithilfe einer Aktion zu übernehmen. Im Wesentlichen, wenn Sie Teilnehmer 2 sind, übernimmt das Gegnerobjekt die Koordinaten der Variablen von Teilnehmer 1:
EREIGNIS: receiveMove2
Hier machen wir das Gleiche. Wenn Sie Teilnehmer 1 sind, übernimmt das Gegnerobjekt die Koordinaten der Variablen von Teilnehmer 2:
Fazit
Diese Demo zeigt zwei der vielen Möglichkeiten, wie Mauskoordinaten verwendet werden können, um die Eigenschaften von Objekten zu aktualisieren, um die Cursorposition in einem Multi-User-Studienaufbau zu übertragen. Sie können Arrays verwenden.
Demodetails: Schritt-für-Schritt-Werte eingeben
Wenn Sie sich in Labvanced immer noch zurechtfinden oder einfach nur eine zusätzliche Klarstellung benötigen, zeigen Ihnen die folgenden Abschnitte Schritt für Schritt, wie Sie bestimmte Befehle implementieren und die Schritte ausführen, die Sie über die Menüs benötigen, um sie umzusetzen:
- Festlegen von
Role_ID==1
in einer Anforderungsaktion - Auswählen des Maus [X,Y]-Arrays, das in einer Variablen für die Mausverfolgung erfasst werden soll
- Verwendung arithmetischer Operationen zum Festlegen einer Objekteigenschaft
Festlegen von Role_ID==1
in einer Anforderungsaktion
In der obigen Demo taucht diese Zeile häufig auf, also wie können Sie sie so erhalten?
Zuerst +Add Action
und auswählen Steuerungsaktionen → Anforderungsaktionen (If…Then), weil dies der Kontext ist, in dem es häufig in dieser Demo erscheint.
Als Nächstes +Anforderung
, damit Sie die Wenn-Bedingung detaillierter angeben können.
Für das erste Bleistift-Symbol (formell bekannt als Das Wertauswahlmenü) wählen Sie Variable
→ Variable Auswählen
, um auf die Role_Id-Variable zu verweisen.
Dies öffnet das Variablenmenü, in dem alle lokalen/globalen Variablen gespeichert sind. Im oberen Bereich unter Globale Variablen
finden Sie die Role_Id
-Variable. Wählen Sie sie aus.
Als Nächstes müssen Sie bei dem anderen Stiftsymbol den Wert der Rollen-ID des Teilnehmers angeben. Gehen Sie zu Konstantenwert → numerisch.
Und geben Sie einfach die Zahl 1 ein. Ta-da!
Verwendung arithmetischer Operationen zum Festlegen einer Objekteigenschaft
Die Festlegung des Cursorstandorts erfolgt mithilfe der Set Object Property-Aktion, bei der das Zielobjekt, seine Eigenschaft und dann der Variablenwert, der als neuer Wert für die Objekteigenschaft verwendet werden soll, angegeben werden.
Wählen Sie die Objekthandlung aus:
Für das Ziel
klicken Sie auf das erste none
und wählen das erste Cursorobjekt mouse_user_1
aus der Liste aus. Für die zweite Liste der Objekteigenschaften wählen Sie die X
-Option:
Dann klicken Sie auf das Stiftsymbol. Wählen Sie Operationen
aus dem Menü und dann die Arithmetische
-Option:
Klicken Sie auf das erste Stiftsymbol und wählen Sie Variable
→ Variable Auswählen
, und ein Dialogfeld mit den Variablen erscheint, aus dem Sie die x_mouse1
-Variable auswählen können:
Klicken Sie dann auf das zweite Stiftsymbol und wählen Sie Konstantenwert
→ Numerisch
und geben Sie die Zahl 5 in das erscheinende Feld ein.
Da dies sich auf die Demo bezieht, in der das Objekt eine Kombination aus einem Bild und Text ist, müssen wir den Wert um 5 Punkte verschieben, damit das darunter liegende Objekt anklickbar ist:
Klicken Sie anschließend auf +Add Property
darunter und geben Sie an, dass die Variable y_mouse1
der Y
-Objekteigenschaft des mouse_user_1
-Objekts zugewiesen wird.