labvanced logoLabVanced
  • Research
    • Publications
    • Researcher Interviews
    • Use Cases
      • Developmental Psychology
      • Linguistics
      • Clinical & Digital Health
      • Educational Psychology
      • Cognitive & Neuro
      • Social & Personality
      • Arts Research
      • Sports & Movement
      • Marketing & Consumer Behavior
      • Economics
      • HCI / UX
      • Commercial / Industry Use
    • Labvanced Blog
    • Services
  • Technology
    • Feature Overview
    • Code-Free Study Building
    • Eye Tracking
    • Mouse Tracking
    • Generative AI Integration
    • Multi User Studies
    • More ...
      • Reaction Time/Precise Timing
      • Text Transcription
      • Heart Rate Detection (rPPG)
      • Emotion Detection
      • Questionnaires/Surveys
      • Experimental Control
      • Data Privacy & Security
      • Desktop App
      • Mobile App
  • Learn
    • Guide
    • Videos
    • Walkthroughs
    • FAQ
    • Release Notes
    • Documents
    • Classroom
  • Experiments
    • Cognitive Tests
    • Sample Studies
    • Public Experiment Library
  • Pricing
    • Licenses
    • Top-Up Recordings
    • Subject Recruitment
    • Study Building
    • Dedicated Support
    • Checkout
  • About
    • About Us
    • Contact
    • Downloads
    • Careers
    • Impressum
    • Disclaimer
    • Privacy & Security
    • Terms & Conditions
    • Third-Party Licenses
  • Appgo to app icon
  • Logingo to app icon
Learn
指南
视频
步骤说明
常见问题解答
通讯档案
文档
课堂
  • 中國人
  • Deutsch
  • Français
  • Español
  • English
  • 日本語
指南
视频
步骤说明
常见问题解答
通讯档案
文档
课堂
  • 中國人
  • Deutsch
  • Français
  • Español
  • English
  • 日本語
  • 指南
    • 入门

      • 任务编辑器
      • 刺激呈现
      • 响应的正确性
      • 对象
      • 事件
      • 变量
      • 任务向导
      • 试验系统
      • 研究设计
        • 任务
        • 阻塞
        • 会议
        • 组
    • 特色主题

      • 实验设计
        • 创建研究
        • 数据框模式
      • 随机化与平衡
      • 眼动追踪
      • 问卷
      • 桌面应用
      • 示例研究
      • 参与者招募
      • API访问
        • REST API
        • Webhook API
        • WebSocket API
      • 其他主题

        • 精确刺激时机
        • 多用户研究
        • Labvanced中的头部追踪 | 指南
    • 主应用标签

      • 概述:主标签
      • 仪表盘
      • 我的研究
      • 共享研究
      • 我的文件
      • 实验库
      • 我的账户
      • 许可证与服务
    • 研究标签

      • 概述:研究特定标签
      • 研究设计
        • 任务
        • 阻塞
        • 会议
        • 组
      • 任务编辑器
        • 任务控制
        • 试验系统
        • 画布和页面框架
        • 对象
        • 对象属性表
        • 变量
        • 系统变量表
        • 事件系统
        • 文本编辑器功能
        • 任务中的眼动追踪
        • 任务中的头部追踪
        • 多用户研究
      • 设置
      • 变量
      • 媒体
      • 文本与翻译
      • 启动与参与
      • 受试者管理
      • 数据视图与导出
        • 数据视图和变量 & 任务选择(旧版本)
        • 访问录音(旧版本)
  • 视频
    • 视频概述
    • 在Labvanced中入门
    • 创建任务
    • 元素视频
    • 事件与变量
    • 高级主题
  • 操作指南
    • 介绍
    • 斯特鲁普任务
    • 词汇决策任务
    • 波斯纳注视提示任务
    • 改变盲点闪烁范式
    • 眼动追踪样本研究
    • 婴儿眼动追踪研究
    • 鼠标追踪的注意捕捉研究
    • 快速串行视觉呈现
    • ChatGPT研究
    • 眼动追踪演示:SVG作为AOI
    • 多用户演示:显示被试光标
    • 手柄/操纵杆控制器-基本设置
    • 桌面应用程序研究与EEG集成
    • 被试间组平衡和变量设置
  • 常见问题
    • 功能
    • 支持政策与指南
    • 安全与数据隐私
    • 许可
    • Labvanced的精确性
    • 程序化使用与API
    • 离线使用Labvanced
    • 故障排除
    • 研究创建问题
  • 新闻通讯档案
  • 文档
  • 教室

显示参与者的光标: 多用户演示

概述

在一个多用户实验中,当多个参与者实时参与实验时,您可能希望让他们的光标彼此可见。在此演示中,我们将向您展示如何设置这一点。

Labvanced中多用户鼠标跟踪功能的预览图

实施说明

请注意,您可以在Labvanced中实现共享多个参与者的光标位置的几种方法,因为该平台具有灵活性,因此在选择方法之前,考虑您的实验设计非常重要。

为了说明这一点,我们将提出两种实现方法:

  • 方法1: 一个 利用数组的演示 用于分配光标位置
  • 方法2: 在 下文的一个部分, 我们将讨论一个 演示,其中可以使用单个值作为x和y坐标

方法1: 使用鼠标跟踪和数组显示光标

此演示包含两个对象(每个用户一个鼠标),并在对象面板的侧边面板中列出。此方法可用于参与者超过2人的多用户研究。

对象

以下是Object Properties面板,在此可以处理所有视觉样式。目前,两个光标的 Visibility 值均为1(这意味着不透明度=100%),如下所示:

添加光标对象到Labvanced编辑器以设置多用户研究

对于此演示,我们将Visibility更改为0,如下所示。稍后,当实验开始时,我们将使其中一个光标可见。即如果您是参与者1,那么您将看到参与者2的光标对象,反之亦然。这在下面的事件:Init部分中进行了描述。

在Labvanced中隐藏光标,以便在多参与者研究实验开始时显示一个光标的可见性

如果您不想为光标有两个对象,请参阅本节以查看仅使用单个光标对象的替代方法。

自定义变量

在此,我们列出为此演示创建的所有自定义变量。您可以预先创建它们或在构建实验时在编辑器中创建它们。

在多用户研究中为光标共享创建的变量

事件概述

要添加事件,请单击[+] Frame Event (on this frame only)。

在此演示中,我们有以下事件:

  1. 事件:Init: 使其他参与者的鼠标可见
  2. 事件: sendMove: 发送鼠标坐标
  3. 事件: receiveMove: 接收鼠标坐标

下面描述了每个事件的结构。

事件: init

此事件指定当帧初始化时会发生什么。在这种情况下,我们的目标是参与者1看到参与者2的鼠标,反之亦然。

触发

此事件的触发器是On Frame Init,因为我们希望在帧初始化时立即分配光标对象的可见性。

Labvanced中的帧初始化

动作

在指定此内容并单击“下一步”按钮后,您可以选择在帧初始化时发生的动作。

下面,我们展示的动作是 控制动作 → ‘如果...则’,,因此:

  • 如果 Role_Id 等于1(注意:Role_Id 是一个唯一于多用户研究的变量,分配给参与者其ID)。
  • 那么,将Set Object Property的 mouse_user_2 对象的 Visibility 设为1。
  • 注意: 这两个动作的组合本质上意味着:“如果您是参与者1(Role_Id==1),那么您将看到 mouse_user_2 对象。”
  • 注意: Role_Id == 1 如何在编辑器中指定?请参阅下面的 逐步说明部分,其中对此进行了更详细的解释。

指定如果第一参与者的角色ID为1,则记录鼠标跟踪数据

在Else If部分,我们对参与者2 (Role_Id==2) 做相同的事情。目标对象是mouse_user_1,其 Visibility值应为1。

指定如果第二参与者的角色ID为2,则记录鼠标跟踪数据

事件: sendMove

接下来,我们必须在两个参与者之间建立一个“桥梁”,如果您移动鼠标,这些值将被跟踪/存储并发送给另一位参与者。

触发

因此,使用Mouse trigger作为此事件的触发器,任何进行的“移动”都会触发该事件。

表明事件触发器是一个鼠标触发器。

动作

同样,需要一个 Control Action → If…Then 命令:

指示角色ID等于1

记录鼠标跟踪数组并分享给多参与者研究中的其他参与者

如果您的 Role_Id==1,则以下 Variable Actions 将发生:

  • Set / Record a Variable: 点/定义变量 moveMouse1 并将其等于触发器特定值 Mouse [X,Y] Array。
  • Distribute Variable: 将此变量分享给参与者2。

否则,如果您的Role_Id==2 …

指定角色ID等于2

那么:

  • moveMouse2 将记录鼠标 [X,Y] 数组(就像上述示例一样),但我们将用它来存储参与者2的鼠标跟踪值,并将其等于他们的鼠标 [X,Y] 数组。
  • 然后,将此变量分发给参与者1。

设置鼠标跟踪以测量数组和坐标值

总结- 到目前为止,我们已经:

  • 创建了变量以存储每个参与者的鼠标跟踪 [X,Y] 数组(参与者1的光标为moveMouse1,参与者2的光标为moveMouse2)
  • 并建立了一座桥梁,通过分配变量操作将鼠标跟踪值发送给另一位参与者。

EVENT: receiveMove

接下来,我们需要指定这些鼠标追踪值将发生什么。在这种情况下,当以数组格式接收到鼠标移动时,我们希望更改鼠标光标对象以反映这些移动!换句话说,使用 [X,Y] 数组,我们将这些值绑定到鼠标光标上,使其实际上移动,显示其他参与者在屏幕上所做的事情!因此,为了实现这一点,将使用下面描述的触发器和动作。

Trigger

由于鼠标追踪值被存储在变量中,因此每当这些变量发生变化时,意味着鼠标在移动。因此,我们可以使用 Variable Value Changed trigger 通过选择两个特定的变量,这两个变量保存了鼠标追踪值,从而在屏幕上更新光标位置,如下所示:

Setting the trigger if the mouse tracking values change

Action

接下来,我们想要使用 Select From Array (Read) action 来从光标的变量数组中获取 x 和 y 坐标值,因为我们计划使用它们来设置对象的坐标。

因此,我们选择 moveMouse1 变量,该变量具有参与者 1 的 [X,Y] 数组,并调用第一个值,该值为 Fixed Index 的 1,并将该值存储在一个名为 x_mouse1 的数字变量中,因为 x 值在数组中列为第一。

Set the mouse tracking array and save the individual values and storing them as variables with x- and y- values

我们添加另一个 Select From Array (Read) 动作,并将 Fixed Index 写为 2,因为我们想调用第二个数组值,即 y 坐标,并将其存储在 y_mouse1 变量中。

为了使光标图像实时移动,我们需要更新其图像坐标,使其拥有与鼠标追踪的 x 和 y 坐标相等的 x 和 y 值(我们在上述行动中获取并存储在变量 x_mouse1 和 y_mouse1 中)。

为此,我们需要选择 Set Object Property 动作,以便 Target 的 mouse_user_1 (在下面的图像中仅写为“mouse”,因为对话框缩短了标题)及其属性 X 的值 (=) 为 x_mouse1+5,这是一个 算术操作。 请参考这个 逐步解释 以了解如何设置。

Set object property of participant one's mouse location to take on the mouse tracking values

此时您可能会想知道为什么输入字段中会出现 +5……这是因为我们需要创建一个偏移量,因为这个对象实际上是一个包含嵌入图像的文本对象(如本次演练的 开头所述)。因此,如果您需要构建您的研究并使用户能够看到他们自己定制的光标,就像我们在这里做的那样,但也可以单击研究中的其他对象,那么如果您不创建这个偏移量,这将是不可能的(除非您选择省略光标的图像,仅保留文本标签)。

接下来,我们选择 +Add Property 并指向相同的图像对象,选择 Y 属性并将其设置为变量 y_mouse1。

我们重复相同的过程,但只选择其他为参与者 2 专门设置的变量:

Taking the mouse tracking arrays of participant 2 and storing them as single variables for storing x- and y- values of each variable

在这里,我们指向对象 mouse_user_2 并分配相应的变量:

Using the x- and y-mouse tracking values to update the mouse cursor object to share the location of the mouse cursor location in the multiparticipant study

所有这些动作一起使两个光标对象为两个参与者移动,通过从数组变量读取值,然后使用这些数字值设置对象的 x 和 y 值。

EVENT: end

接下来,我们创建一个事件以正式结束数据记录过程,并通过插入一个“结束”按钮来存储数据,该按钮在用作触发器时,将导致一个控制动作,在其中进行 Accept/End Session 动作。

Trigger

要结束会话,按钮触发器是点击 End Button 将触发会话结束。

Indicating the button as a trigger

Action

该动作是接受/结束会话。

End the session

再次请注意,此演示旨在学习目的,并且只是共享鼠标和光标位置的多用户研究设置的众多方法之一。关于如何实现此效果的另一个示例将在接下来的部分中描述。

Approach 2: Single Variable Approach for Sharing Cursors in Multi-User Studies

在另一个演示中, 我们展示了与使用数组不同的选项,使用单一值(即直接调用 X 和 Y 坐标)。

Preview of a multi user study where there is a mouse cursor location being shared

这是这个演示的完整预览,包括最终记录的数据预览:

Single Object for the Cursor

此演示与之前的演示不同,因为光标只有一个对象,而不是两个。此方法非常适合只是想显示“对手”或“队友”光标位置的多用户研究。

Adding the mouse cursor object to the Labvanced editor for the purpose of a multi participant study

Custom Variables

这个演示还包括以下自定义变量及其规格。虽然这个演示的变量较少,但需要使用的事件/动作却比前面的数组示例多。

Custom variables created for a multi participant

EVENT: sendMove

触发器是鼠标移动:

The mouse trigger being selected

动作是记录触发器特定的鼠标 X 坐标和 Y 坐标在两个分别命名为参与者 1 的变量中。

Recording x- and y-values as seperate values based on Participant one's mouse tracking

在这个 if/then 条件下的下一步动作用于将这两个值分配给参与者 2。

Distributing the mouse tracking variable to participant 2 in a multi user study

然后我们添加一个“Else If”条件,以记录与触发器相关的鼠标 X 坐标和 Y 坐标的特定值到两个单独的变量中,这两个变量的名称明确表示参与者 2。

Recording x- and y-values as seperate values based on Participant two's mouse tracking

接下来的操作用于将这两个值分发给参与者 1。

Distributing the mouse tracking variable to participant one in a multi user study

事件:receiveMove1

现在我们需要一个事件来传输鼠标坐标。因此,如果与参与者 1 相关的特定变量值发生变化,它们将作为触发器使用:

Setting that when the mouse tracking variables change, then the trigger

然后我们使用一个动作来更新光标位置的对象属性,使其采用这些值。本质上,如果你是参与者 2,则对手对象将采用参与者 1 变量的坐标:

Setting the cursor property equal to the mouse tracking values

事件:receiveMove2

我们在这里做相同的事情。如果你是参与者 1,则对手对象将采用参与者 2 变量的坐标:

The variable values changing of mouse tracking being used as an event trigger

Setting the mouse cursor values to be equal to the values of participant 2 in a multi user study

结论

该演示展示了在多用户研究设置中使用鼠标坐标更新对象属性的众多方法中的两种。你可以使用数组

演示详情:逐步输入值

如果你仍然在 Labvanced 中找到自己的方向或只是需要一些额外的澄清,下面的部分将逐步向你展示如何实现某些命令以及你需要通过菜单采取的步骤:

  • 在需求操作中指定 Role_ID==1
  • 选择要记录在变量中的鼠标 [X,Y] 数组以进行鼠标跟踪
  • 使用算术运算来设置对象属性

在需求操作中指定 Role_ID==1

在上面的演示中,这一行出现得很频繁,那么你该如何获得这样呢?

Specifying that the Role id is one

首先 +Add Action 和选择控制操作 → 需求操作(如果…那么),因为这是它在此演示中频繁出现的语境。

Selecting the Control Action and specifying the If...Then action

接下来,+ Requirement 以便你可以更详细地指定 If 条件。

对于第一个铅笔图标(正式称为 值选择菜单),选择 Variable → Select Variable 以指向 Role_Id 变量。

Selecting a variable

这将打开变量菜单,其中存储了所有本地/全局变量。在顶部面板下,Global Variables 中你将找到 Role_Id 变量。选择它。

Selecting the Role ID

接下来,在另一个铅笔图标上,你需要指定参与者的角色 id 的值。因此,转到 常量值 → 数字

Selecting the constant value

然后简单输入数字 1。大功告成!

Role ID is set to 1

使用算术运算来设置对象属性

设置光标位置是通过使用设置对象属性动作来完成的,指定目标对象、其属性,然后指定作为对象属性的新值的变量值。

Using the object property to call on the values to set it to a mouse cursor

选择对象操作:

Set Object property, selecting the action

对于 Target,点击第一个 none 并从列表中选择第一个光标对象 mouse_user_1。对于对象属性的第二个列表,选择 X 选项:

Selecting the mouse user object

然后,点击铅笔图标。选择 Operations 并从菜单中选择 Arithmetic 选项:

Selecting the Arithmetic operations

点击第一个铅笔图标并选择 Variable → Select Variable,会弹出一个变量对话框,你可以从中选择 x_mouse1 变量:

Select Variable action

然后,点击第二个铅笔图标并选择 Constant Value → Numeric,在出现的字段中输入数字 5。

Choosing the constant value option

因为这与演示相关,其中对象是图像加文本的组合,因此我们需要将值偏移 5 个点,以便底下的对象可以被点击:

Setting the set object property to be equal to the mouse tracking values

点击 +Add Property 下面,指示 y_mouse1 变量将分配给 Y 对象的 mouse_user_1 对象属性。

The set object property values in a multi user study using the mouse tracking values

Prev
眼动追踪演示:SVG作为AOI
Next
手柄/操纵杆控制器-基本设置