事件系统

描述
事件系统对任何研究都是至关重要的。它是设置要记录的值、使实验进展和创建任务的方式。用户可以创建一个事件系统,以执行任务中的所有功能、逻辑和交互。事件通常充当对象和变量之间的中介。
事件系统由触发器和动作组成。在这里,您设置规则,比如“当发生此事件”(触发器)后“执行此操作”(动作)。例如:如果参与者点击特定图像(触发器),则显示不同的随机图像(动作)。

有关事件在Labvanced中如何工作的介绍,请参考这个快速视频:
创建事件 - 概述
事件在任务编辑器中的右上角的“事件”选项卡下管理。可以通过点击+ 帧事件为该帧创建新的事件,也可以通过点击+ 试次事件将事件应用于所有帧。所有现有事件在右侧面板中以列表视图显示。事件是在帧级别上定义的,可以在每帧中分别指定或在试次中各帧间重复相同。

无论哪种方式,事件始终是在特定帧内的试次组中的所有试次中定义的。然而,自定义逻辑允许用户仅在某些试次、条件或其他情况下执行事件。
下面的视频提供了Labvanced中可用的触发器和动作的概述:
事件的执行顺序可以调整。默认情况下,具有相同触发器的事件会在列表中更靠前并优先执行。事件也可以被复制和删除。在选择现有事件时,具体信息显示在右下角的(事件属性)面板中。为了更好地概览,现有事件还可以重新打开(名称字段旁的图标)。
触发器
触发器定义了事件何时执行。这可以是对特定对象的鼠标点击、某个键盘输入、变量的变化、视频文件的开始或其他许多事情。所有触发器及其设置/参数在以下列表中进行了说明:
| 触发器类别 | 触发器选项 | 描述 |
|---|---|---|
用户输入触发器 | 用户输入触发器指的是任何可以手动由用户/参与者激活的触发器,例如移动鼠标、点击键盘元素、滚动等。 | |
生理信号触发器 | 生理信号触发器在有特定生理输入时发生,比如注视特定元素或变化的头部运动。 | |
试次和帧触发器 | 这些触发器与实验试次和帧有关,例如帧的开始或结束。 | |
变量值变化触发器 | 变量(值变化) | 当特定变量值发生变化时,事件触发器将发生。 |
媒体对象触发器 | 媒体对象触发器 | 该触发器与媒体对象有关,例如视频/音频文件的暂停、录音完成等。 |
API触发器 | 这些是当有来自API的传入数据时发生的触发器。 | |
全局触发器 | 全局触发器指的是对实验的任何重大改变,例如暂停实验或多用户研究中的参与者离开。 |
用户输入触发器
用户输入触发器指的是任何可以手动激活的触发器。

下表提供了Labvanced中所有用户输入触发器的基本概述。每个触发器将在接下来的章节中详细描述。
| 用户输入触发器选项 | 概述 |
|---|---|
鼠标触发器 | 任何鼠标移动都可以用作触发器以启动事件,例如:滚动、点击、悬停等。您还可以将特定元素或目标与触发器相关联。例如,只有在点击特定图像时,鼠标点击才会被用作触发器。 |
键盘触发器 | 任何键盘按键都可以用作触发器以启动事件。您可以指定特定的键盘字母或数字作为触发器。 |
按钮点击 | 在Labvanced中创建的按钮对象可以用作触发器以启动事件。 |
输入时回车 | 当参与者在实验中按下“回车”键时,通常会使用此触发器,作为提交他们的书面反应或文本框区域的输入的手段。 |
滚动触发器 | 当参与者滚动时会发生此触发器。您可以指定x或y方向的滚动,以及滚动发生的元素,以作为事件触发器。 |
游戏手柄/摇杆触发器 | 此触发器允许您在实验设计中使用游戏手柄和摇杆控制器作为记录数据的输入设备。 |
鼠标触发器
“鼠标触发器”选项是非常流行的事件触发器,因为它基于任何鼠标交互来启动事件,例如:向上/向下移动鼠标、点击、悬停在特定对象上、离开特定对象或任何移动!

下面的示例显示了一个“鼠标触发器”,当左键单击名为“Image_1”的目标对象时,将发生此触发器:

以下是您在使用鼠标触发器时可以使用的选项的完整概述:
| 菜单项 | 菜单区域 | 鼠标触发器选项和规格 |
|---|---|---|
动作 下拉列表: | ![]() | 以下鼠标触发器选项可从下拉列表中获得:
|
按钮 下拉列表: | ![]() |
|
目标 选项: | 在上面的示例中,"Image_1"是将触发事件的按钮点击的目标。 可以通过点击底部的** ‘+ 添加目标’**选项来添加多个目标。 |
|
键盘触发器
“键盘触发器”选项是另一种流行的事件触发方式。其实,来自键盘的任何输入都可以用作触发器。这包括:按键、按住或释放键。

在下面的示例中,触发器设置为当指定的目标数值(0、2或6)被按下时会发生:

以下是您在使用键盘触发器时可以使用的关键和选项的完整概述:
| 菜单项 | 菜单区域 | 键盘触发器选项 |
|---|---|---|
动作 下拉列表: | ![]() |
|
键 哪个键触发事件 | ![]() | 通过单击**+ 添加:** 选择的选项指定用作触发器的键:
+ 添加:**按钮来添加多个键盘触发器。 |
| 附加选项 | ![]() | 启用小键盘按钮选项允许将小键盘上的键用作实验中的触发器。 对于允许事件传播选项,如果多个事件具有相同的键盘触发器,则所有事件将触发而没有它。只有第一个事件会触发,事件执行将在第一个事件完成后停止。 |
按钮点击触发器
如果您在编辑器中放置了按钮或导航对象,可以利用它们作为事件的一部分,其中单击按钮作为触发器以进行操作。

单击此触发器会显示以下菜单,您可以在其中指定哪个特定按钮将作为触发器:

以下是所示项目的详细信息:
| 菜单项 | 菜单区域 | 按钮点击触发器选项 |
|---|---|---|
目标: + 设置目标 | ![]() | |
按钮: 选项 | ![]() | 指定帧上的具体按钮 |
- 注意: 在事件系统中选择按钮点击触发器后,您可以使用和引用触发器特定的按钮点击值以及使用 值选择菜单执行各种操作。
输入时回车触发器
触发条件:当特定元素处于活动状态时,按下“回车/返回”键。
参数:
添加目标:向事件添加输入元素。
注意: 在事件系统中选择输入时回车触发器后,您可以使用和引用触发器特定的输入时回车值以及使用 值选择菜单执行各种操作。
滚动触发器
触发条件:在特定元素上使用滚动条、触控板的滚动或鼠标的滚轮。
参数:
- 选择滚动在Y轴还是X轴(垂直滚动或水平滚动)。
目标:设置滚动触发器将应用于的目标元素。
注意:对于长文本,在“对象属性”(/content/learn/zh/guide/task-editor/objects.html#object-properties)面板的“样式”部分,Overflow-X和/或Overflow-Y选项需要选择滚动。
游戏手柄/摇杆触发器
游戏手柄/摇杆触发器允许您在实验设计中使用游戏手柄和摇杆控制器作为记录数据的输入设备。 注意: 请记得在设置选项卡下启用此选项。

选择此触发器后,将出现以下对话框。

连接您的游戏手柄后,您可以指定哪些特定键应用作触发器。按下特定键时,系统将显示其ID。
在下面的示例中,2指的是◎键,3指的是▵键。 注意: 在游戏手柄中,键ID分配的工作方式可能会有所不同。

按下键后,实时数据也会显示在此触发器对话框的后半部分,您可以实时查看按下或释放时值的变化:

查看此演示以获取更多详细信息和使用此触发器的研究示例。
以下表格更详细地解释了这些选项。
| 菜单项 | 菜单区域 | 游戏手柄/摇杆触发器选项 |
|---|---|---|
监听按钮 | ![]() | I.) 指定触发器与按钮相关,以及是否按下键、按下或释放键,或释放键。 II.) 指定触发器是针对任何按钮还是特定按钮。如果选择特定选项,您将被提示按下游戏手柄上的按钮。 |
监听轴 | ![]() | 如果需要轴运动,则可以指定触发器将在阈值以特定值变化时发生。默认值为0.01。 |
| 连接状态 | ![]() | 指示设备是否已连接。 |
| 实时数据流 | ![]() | 连接设备并按下键或移动轴时,实时数据将显示在此处,您在设备上的任何输入都会在这里显示。这在设置研究时进行测试以及确定要使用哪些键或轴时非常有用。 |
注意: 在事件系统中选择游戏手柄/摇杆触发器后,您可以使用和引用其触发器特定值以及使用 值选择菜单执行各种操作。
生理信号触发器
这些触发器仅在任务中启用了眼动跟踪和/或头部跟踪时适用。
眼动跟踪注视触发器
触发条件:
- 总体而言,启用眼动跟踪时,触发器将适用。
- 仅在注视特定元素时进行触发
参数:
眼动跟踪定点触发器
此触发器仍处于BETA阶段。
头部跟踪触发器
触发条件:
头部方向或头部运动的变化。
注意: 在事件系统中选择头部跟踪触发器后,您可以使用和引用触发器特定的头部跟踪值以及使用 值选择菜单执行各种操作。
试次和帧触发器
任务初始化触发器
触发条件:
- 任务的第一个试次的第一帧。每个任务只能执行一次,尽管在事件选项卡中对该帧的所有实例都显示。
该触发器与“洗牌”和“从中读取”操作配合良好。通过这些组合,您可以在任务开始时洗牌数组条目或数据帧,并将被试分配到刺激集,而无需创建多个事件来读取刺激或数据。
参数:无
- 注意: 在事件系统中选择任务初始化触发器后,您可以使用和引用触发器特定的任务初始化值以及使用 值选择菜单执行各种操作。
帧初始化触发器
触发条件:
- 帧的初始化,在其变得对参与者可见之前。
该触发器与洗牌、从中读取和绘制随机数操作配合良好。通过这些组合,这些操作可以在帧出现之前完成,为其他操作在帧开始时开始留下清晰的路径。
注意: 请勿将帧初始化触发器与记录变量的事件或涉及系统变量(例如试次编号或条件编号)一起使用。这是因为帧初始化触发器发生在试次之间,因此即将显示的试次或条件并没有完全准确的计数。
参数:无
- 注意: 在事件系统中选择帧初始化触发器后,您可以使用和引用触发器特定的帧初始化值以及使用 值选择菜单执行各种操作。
关于任务和帧初始化触发器的注意事项: 由于任务和帧初始化触发器在任务或帧开始之前发生,因此在此期间创建的变量将在任务/帧实际开始时重置。使用此事件时会出现警告:

如果您不希望变量值被重置,请记得在变量属性窗口中取消选中“在试次开始时重置”框。
帧开始触发器
触发条件:
- 帧的开始
参数:无
- 注意: 在事件系统中选择帧开始触发器后,您可以使用和引用触发器特定的帧开始值以及使用 值选择菜单执行各种操作。
帧结束触发器
触发条件:
- 帧的结束(在帧不再可见之后)
参数:无
- 注意: 在事件系统中选择帧结束触发器后,您可以使用和引用触发器特定的帧结束值以及使用 值选择菜单执行各种操作。
变量值变化触发器
变量值变化
触发条件:
- 变量的值从其起始值发生变化
参数:
变量:选择要“监听”变化的一个或多个变量。这些变量的值发生的任何变化将立即触发相应的动作。
注意: 在事件系统中选择变量值变化触发器后,您可以使用和引用触发器特定的变量值变化值以及使用 值选择菜单执行各种操作。
媒体对象触发器
媒体对象触发器
曾被称为单独的“控制音频/视频触发器”和“控制对象”触发器。
触发条件:
- 视频或音频文件的开始、暂停或停止
- 文件上传完成、文件选择、录音对象的录音完成
- 相机快照对象的快照完成或上传完成
参数:
目标:选择帧上存在的对象元素
执行条件:选择触发器的子类型
- 音频或视频对象选项:
- 播放开始:触发当元素开始播放时
- 播放停止:触发当元素暂停时
- 播放结束:触发当元素停止播放时
- 视频、音频或屏幕录制对象选项:
- 录音完成:触发当音频录音停止时
- 上传完成:触发当文件上传完成时
- 文件上传对象选项:
- 文件选择:触发当文件被选择时
- 上传完成:触发当文件上传完成时
- 相机快照对象选项:
- 快照完成:触发当相机成功拍摄快照时
- 上传完成:触发当快照完成上传时
- 音频或视频对象选项:
注意: 在事件系统中选择媒体对象触发器后,您可以使用和引用触发器特定的媒体对象值以及使用 值选择菜单执行各种操作。
API触发器
如果您需要将数据从外部服务器发送或传送到Labvanced,则可以使用“API触发器”和“API动作”。可以用作触发器的有:
- Websocket触发器
- OpenAI触发器

Websocket触发器
Websocket触发器用于接收来自websocket/API的消息,并将其处理作为动作的触发器。

单击此选项后,将显示以下项目。

- 接受/接收自: 自动检测本地主机的IP地址。可以在
设置选项卡下的“特殊功能”中手动更改。 - 触发器/消息: 输入将作为触发器的消息。输入“任何”以接受多个消息作为触发器。
有关API触发器/动作的使用示例,请检查此演示https://www.labvanced.com/page/library/51053,通过单击对话框中的“检查”选项。
- 注意: 在事件系统中选择WebSocket触发器后,您可以使用和引用触发器特定的WebSocket值以及使用 值选择菜单执行各种操作。
OpenAI触发器
“OpenAI触发器”可用于基于OpenAI的传入信息来启动动作。

选择此选项后,将显示以下参数:

注意: 另请参考此演示,其中我们逐步构建一个研究,同时将ChatGPT集成到研究中并利用此触发器。
在下面的示例中,被分配的数据框称为“df”,并且来自“OpenAI触发器”的结果将附加到此数据框中。此数据框需要有两列。第一列将表示“角色”,第二列将表示“聊天消息”。动作的值将自动附加到此处链接的数据框中。

如果您还使用“发送到OpenAI”动作,则需要在此处使用与此处指示的相同数据框。
- 注意: 在事件系统中选择OpenAI触发器后,您可以使用和引用触发器特定的OpenAI值以及使用 值选择菜单执行各种操作。
全局触发器
全局触发器在实验中发生重大变化时触发,即某些“全局”事件,例如暂停实验或参与者离开多用户研究!以下选项列为全局触发器:
- 暂停/恢复实验
- 参与者离开多用户研究

暂停/恢复实验
“暂停/恢复实验”触发器是一个选项,允许您根据实验的暂停或恢复来执行事件。

选择此触发器后,将显示以下视图,您可以进一步指定触发器的性质,无论是在实验暂停时还是继续/恢复时执行:


实验已暂停: 参与者暂停(退出全屏)研究。
实验已继续: 参与者恢复研究。此触发器在眼动跟踪研究中效果良好。它可以用于在参与者离开虚拟下巴托架时将其送回先前的试次或帧。
参与者离开多用户研究
如果参与者离开多用户研究,这也可以用作事件的触发器。如果参与者离开多用户研究,这将全局性地影响实验,因为这将阻止其他参与者继续研究。

通过选择此触发器,您可以指定参与者离开多用户研究时将发生什么类型的操作。

动作
动作定义了事件执行时应该发生的事情。它们可用于更改变量和对象属性、记录数据、从数组中读取和写入数据,或跳转到下一个试次或任务。通常每个事件有几个动作。使用“控制动作”,您可以使用逻辑操作(如果-否则语句)、循环、回调函数,以及将动作嵌套在彼此内(例如while循环在if语句内)。因此,事件系统可以被视为图形编程环境。在这种视图中,触发器充当函数调用,而动作描述功能逻辑。这种方法保证几乎所有实验逻辑都可以在没有某些程序/语法结构的情况下实现。
下表提供了Labvanced中可用动作的基本概述:
| 动作类别 | 动作选项 | 描述 |
|---|---|---|
对象动作 | 对象动作指的是在任务中发生的任何操作。 | |
变量动作 | 任何读取或记录变量值的动作。 | |
数组动作 | 数组操作涉及选择、添加、删除、改变和洗牌数组及其条目。 | |
数据框操作 | 如果您在实验中使用.csv文件(数据框),则这些动作是相关的。 | |
跳转动作 | 允许您通过跳转到特定部分在实验中导航,以及接受和拒绝参与者部分。 | |
控制动作 | 控制动作用于执行特定事件序列,如if/then逻辑、循环(如播放重复声音或闪烁图像),以及设置动作发生的延迟。 | |
API动作 | 指的是用于将数据发送到API的API特定动作。 | |
代码动作 | 代码动作允许您使用JavaScript或CSS。 | |
粘贴动作 | 粘贴动作 | 允许您粘贴以前复制的动作。 |
| 对象动作指的是在任务中对现有对象将要进行的任何操作。有几种对象动作选项: |
- 设置对象属性
- 控制媒体对象
- 复制对象
- 对每个对象执行动作

设置对象属性动作
通过“设置对象属性”动作,您可以通过指定相关对象、要更改的属性和新值,任意更改对象的外观。
在下面的示例中,该动作将通过将“可见性”设置为“1”和设置其“高度”为“400”来更改目标图像的两个属性,同时通过将此变化发生的时间存储在名为“Object_Prop_Change_Time”的数值变量中,以记录此变化在屏幕上的发生时间。

以下是您在使用“设置对象属性”动作时遇到的字段的完整概述:
| 菜单项 | 菜单区域 | 设置对象属性触发器选项 |
|---|---|---|
目标 对象选择下拉列表: | ![]() | |
目标 属性选择下拉列表: | ![]() | 第二个下拉菜单表示要更改的对象属性。有关可用选项及其参数的完整说明,请参见对象属性表。 |
值选择菜单 | 定义新值,即在动作中使用**值选择菜单**所应得到的新对象属性值。 | |
‘+ 添加属性’ | ![]() | 可以通过单击此图标添加并更改多个属性。 |
| 复选框 - 记录此更改在屏幕上反映的时间(以帧开始后毫秒为单位测量)。 | ![]() | 当属性更改时,需要稍短的时间(大约~10毫秒)才能看到这些更改。通过此选项,您可以更精确地记录所更改的属性在下次显示刷新时实际可见的时间。 注意: 选择此选项后,将出现一个对话框,提示您指示(或创建新变量)此捕获值应存储在哪里。该变量应为数值类型。 |
控制媒体对象动作
曾经是单独的“控制音频/视频”和“控制对象”动作。
效果:改变视频/音频元素的播放或改变上传/录制元素的状态。
参数:
- 目标:选择一个媒体对象
- 效果:选择一个子动作
- 音频或视频对象选项:
- 开始播放:开始播放视频/音频文件
- 停止播放:停止视频/音频文件
- 暂停播放:暂停视频/音频文件
- 跳转到时间:允许您指定在音频/视频文件中跳转的时间(以毫秒为单位)
- 静音:关闭对象的声音
- 恢复音量:恢复对象的声音
- 音频、视频或屏幕录制对象选项:
- 开始录制:开始新的(音频)录制
- 停止录制:停止(音频)录制
- 开始上传:开始上传文件
- 清除录制:删除(音频)录制数据。
- 开始播放:开始播放记录的文件
- 停止播放:停止播放记录的文件
- 暂停录制:暂停对象的录制
- 恢复录制:恢复对象的录制
- 文件上传对象选项:
- 开始上传:开始为所选文件的上传过程
- 清除文件:删除所选文件
- 选择文件:允许参与者选择所需的文件
- 照相机快照对象选项:
- 开始摄影:打开参与者的相机
- 停止摄影:关闭参与者的相机
- 开始上传:开始上传快照到实验
- 拍摄快照:使用参与者的相机拍照
- 音频或视频对象选项:
复制对象动作
效果:复制一个对象,取代对多个单独对象和重复事件的需求。
参数:
- 源:选择要复制的帧上的对象。
- 复制数量:输入要制作的源对象的副本数量。
- 设置新元素名称:从多个参数中选择以确定副本的名称。
- 使用递增后缀分配名称:在新元素名称的末尾添加一个数字标签以区分副本。
- 动作序列:允许您选择(从常规动作列表中)将会对副本发生的事情。选择“CurrentObject”作为目标,以将动作应用于所有副本。
对每个对象执行动作
效果:对同一类型的多个对象应用一个动作。
参数:
- 过滤器:选择要针对的元素类型。
- 允许附加名称过滤器:输入要针对的对象名称。对于在一个帧上的多个对象,其中一些有相同名称的情况,这种方法效果很好。
- 动作序列:允许您选择(从常规动作列表中)将会对所选元素发生的事情。选择“CurrentObject”作为目标,以将动作应用于满足上述指定条件的所有元素。
变量动作
变量动作用于设置或创建变量值,记录和定义值,包括跨会话的值。

下表提供了在Labvanced中所有可用变量动作选项的简介。它们将在接下来的部分中得到更详细的描述。
| 变量动作选项 | 描述 |
|---|---|
设置/记录变量 | 写入或设置变量值 |
复制到剪贴板 | 将变量值复制到计算机的内部剪贴板。 |
抽取随机数 | 抽取一个或多个随机数并将其保存在变量中 |
获取URL参数 | 从参与者的唯一URL保存一个值 |
从/向设备读写 | 从本地设备的存储中读取或写入变量。此动作将数据保存到参与者的设备,而不是发送到Labvanced服务器。 |
从/向共享变量读写 | 从共享的变量中读取或写入,这个变量在研究的会话之间共享。该变量可以与所有参与者共享,也可以是每个个体的私有变量。 |
数学与统计 | 对某些输入变量(数组)执行数学运算,并将结果保存到输出变量中。 |
即时记录变量 | 创建所有变量值的快照并将其发送到Labvanced服务器。 |
移动平均滤波器 | 计算某些输入的移动平均(数据的不断更新的平均值)并将结果存储在新变量中。 |
分配变量 | 将一个值发送给其他参与者。值存储在一个变量中。 |
设置/记录变量动作
“设置/记录变量”动作必将在Labvanced中的每个实验中使用,因为这是存储和记录值以及行为测量的方法。

点击此动作后,将出现以下对话框菜单,您可以在其中指定应记录哪个变量及所关注的值:

| 菜单项 | 菜单区域 | 描述 |
|---|---|---|
选择 | ![]() | 点击选择后,您指明哪个变量应存储该值。在这里,您还可以创建一个新变量。 |
| 笔图标 | 笔图标象征着值选择菜单,用于定义和指定应分配给所选变量的确切值(如绿色按钮左侧等号(=)所示)。 |
在下面的示例中,我们创建了一个名为counter的新变量,并使用值选择菜单中的一个算术选项使变量值增加1(根据上一步中定义的触发器)。

下面的图像记录了鼠标的X、Y坐标,以捕捉研究中的鼠标跟踪。下图显示了三种动作如何结合使用以使变量值记录成为可能。左侧的变量是手动创建的,而等号(=)右侧的值是鼠标触发特定值,系统提供了此值,您在记录值时可以引用。

注意: 设置/记录变量动作通常也在控制动作的上下文中使用,您可以根据变量值使用“if / then”和“while loops”指定条件。
复制到剪贴板动作
效果:将变量值复制到计算机的内部剪贴板。
抽取随机数动作
效果:抽取一个或多个随机数,并将其保存在变量中。
参数:
- 类型:选择连续值和离散值
- 分布:选择高斯分布和均匀分布
- 多次抽取(布尔值 true/false):选择抽取一次或多次。
- 抽取次数:选择抽取的次数
- 最小值:定义均匀分布的最小值
- 最大值:定义均匀分布的最大值
- 平均值:定义高斯分布的平均值
- 标准偏差:定义高斯分布的标准偏差
- 保存到变量:选择一个变量以存储值。
获取URL参数动作
效果:从参与者的唯一URL保存一个值。
参数:
- 参数名称:输入所需参数的名称
- 保存到变量:选择要保存参数值的变量
此动作可以与其他动作结合使用,以构建参与者的唯一URL或提取数据分析所需的信息。
从/向设备读写动作
效果:从本地设备的存储中读取或写入变量。此动作将数据保存到参与者的设备,而不是发送到Labvanced服务器。
参数:
- 选择从本地设备读取或写入。
- 选择要读取或写入的变量。
用例:纵向/多会话研究
- 通过此动作,设备特定的数据可以从会话传递到会话,只要同一参与者在每个会话中使用相同的设备。
- 例如,您可以使用此动作记录在会话1中向每个参与者呈现了哪些图像,并确保在会话2中向他们呈现不同的图像。
- 创建一组图像,并随机选择一些在每个会话中呈现。
- 写入设备:呈现在会话1中图像的索引号。
- 从设备读取:在会话2中,读取会话1中的图像索引,并包括一个阻止那些索引在第二次会话中被选择的JavaScript动作。
从/向共享变量读写动作
效果:从共享的变量中读取或写入,该变量在研究的会话之间共享。该变量可以与所有参与者共享,也可以是每个个体的私有变量。
参数:
- 选择要同步的变量。必须是标量或数组。
- 高级选项:
- 存储密钥:选择一个变量名称作为访问同步变量的密钥。
- 读或写方法:
- 读取、修改,然后写入共享变量:读取变量,进行更改,然后将变量发送到研究中。
- 仅从服务器读取共享值:调用在研究中共享的变量,但不进行更改。
- 仅将变量写入服务器:对共享变量进行修改,但不显示给参与者。
- 在不同参与者之间共享值(不仅仅在会话之间):允许参与者在会话之间查看彼此的同步变量值。此选项默认选中,但可以通过单击复选框取消选择。
- 动作序列:
- 从所有可用动作列表中选择会对共享/同步变量发生的事情。
用例:纵向/多会话研究
- 通过此动作,参与者特定的数据可以在会话之间传递,并且可以在会话之间参与者之间共享。
- 例如,您可以使用此动作记录测试中的分数,然后允许参与者将自己的分数与其他完成测试的参与者的平均分数进行比较。
- 另一个示例(与从/向设备读写动作类似)是让参与者从一个数组中挑选自己喜欢的5张图像,执行任务,然后在以后的会话中再次呈现这5张图像。不同之处在于,此动作可用于向其他参与者展示被挑选的图像,或者将这些图像从其他参与者的可用选项中排除。
数学与统计动作
效果:对某些输入变量(数组)执行数学运算,并将结果保存到输出变量中。
参数:
- 类型:选择数组操作、线性代数和统计测试
- 操作:选择数学操作(例如:求和、最小值、标准偏差等)
- 输入数组:选择要执行操作的输入变量(数组)
- 参数:某些操作有附加参数。
- 输出:选择一个输出变量以存储结果。
即时记录变量动作
效果:创建所有变量值的快照并发送到Labvanced服务器。
参数:无
移动平均滤波器动作
效果:计算某些输入的移动平均(数据的不断更新的平均值)并将结果存储在新变量中。
参数:
- 滤波器形状:选择滤波器类型
- 简单移动平均:计算简单移动平均,每个样本具有相同的权重。
- 线性加权移动平均:对样本赋权,使样本的权重线性减少。
- 指数移动平均:对样本赋权,使样本的权重指数下降。
- 样本数量:决定每一步使用多少样本。
- 输入:选择要计算移动平均的输入变量(数组)
- 输出:选择一个输出变量以存储结果。
分配变量动作
分配变量动作对于Labvanced中的多用户研究至关重要。通过此动作,可以在参与者之间共享变量值,实质上让信息(包括刺激位置和任何更改)能够在参与者的屏幕上反映出来。

选择此动作后,将出现以下对话框,您可以在其中指定在参与者之间分配哪个变量值。
下图是填写所有菜单项的功能性分配变量动作对话框的样子。在此示例中,分配变量是用于在两个参与者之间创建聊天的动作,通过从输入字段对象分配一个变量的值。

查看这个包含分配变量和聊天框功能的演示:带聊天附加功能的图像描述任务。
对话框菜单项的完整说明如下:
| 菜单项 | 菜单区域 | 分配变量动作选项和描述 |
|---|---|---|
分配值给 | ![]() | 选择要将值发送给哪些其他参与者。
|
选择目标变量和值 | ![]() |
|
阻止 | ![]() | 如果启用,在当前值分配完成之前,目标变量无法更改。 |
速率限制策略 | ![]() | 速率限制策略是一种保护实验不溢出服务器的方法,作为控制向服务器发送的请求(即通过分配变量进行的更新)速率的预防性策略。以下策略选项可用:
|
数组动作
从数组选择(读)动作
效果:将从数组中读取一个变量并将该值存储在标量变量中。
参数:
- 数组变量:输入数组以读取值。
- 索引类型:决定使用什么类型的索引。
- 固定:使用固定索引进行读取操作。在这种情况下,键入应从中读取信息的位置(基于1)。
- 变量:使用数字变量作为读取操作的索引。在这种情况下,选择标量数字变量以确定读取的位位置。
- 从数组末尾读取:从数组的末尾读取。
- 输出变量:选择一个标量变量,用于存储读取的值。
添加/删除数组条目动作
效果:将条目添加和/或从数组中删除。
参数:
- 数组变量:应执行添加或删除操作的数组变量。
- 索引类型:决定使用什么类型的索引。
- 固定:使用固定索引进行插入/删除操作。在这种情况下,键入应插入/删除条目的数组位置(基于1)。
- 变量:使用数字变量作为插入/删除操作的索引。在这种情况下,选择标量数字变量以确定插入/删除条目的位置。
- 从数组末尾插入/删除:从数组的末尾插入/删除。
- 要删除的条目数量:将在定义的索引位置开始删除数组条目(在插入新条目之前)。0表示不删除任何值。
- 要插入的变量:选择一个或多个标量变量,这些变量将添加到在定义的索引位置的数组变量中。
更改(替换)数组条目动作
效果:在数组中替换/更改一个值。
参数:
- 数组变量:要修改一个值的数组变量
- 索引类型:决定使用什么类型的索引。
- 固定:使用固定索引进行替换操作。在这种情况下,键入应更改的数组位置(基于1)。
- 变量:使用数字变量作为替换操作的索引。在这种情况下,选择标量数字变量以确定替换操作的位置。
- 从数组末尾替换:替换数组中的最后一个条目。
- 输入变量:选择一个(标量)变量,其中保存新值。
随机排列数组条目动作
效果:将数组中的条目/顺序重新排列。
参数:无
数据框架操作
从/向数据框架读写动作
效果:从数据框架中读取值或将值写入数据框架,并将其保存到新的数组变量中。
参数:
- 数据框架变量:选择要读取的数据框架的变量。
- 读取或写入:选择从选定的数据框架中读取或向选定的数据框架写入。
- 逐行或逐列:选择数据应如何读取。
- 索引类型:选择将用于读取数据框架的索引变量类型。可以是固定、变量或最后一行。
- 索引变量:选择将用于作为索引读取数据框架的变量。
- 输出变量:选择用于存储读取/写入的数据的变量,必须是数组变量。
随机排列数据框架条目动作
效果:随机排列数据框架中的条目顺序。
参数:
- 选择要打乱的数据框架。
- 选择是否按行或列打乱数据框架。
跳转动作
跳转到动作
效果:“跳转”参与者到实验中的不同步骤。此动作用于改变实验中的试验和任务的顺序,并可用于为每个参与者创建个性化的实验逻辑。
参数:
- 跳转到:确定在实验中跳转到何处。
- 下一个帧:跳转到下一个帧。如果在试验中没有更多的帧定义,它将跳转到下一个试验的第一个帧。
- 下一个试验:跳转到下一个试验。如果没有更多定义的试验,将跳转到下一个任务的第一个试验。
- 下一个任务:跳转到下一个任务。如果没有更多定义的任务,将跳转到下一个区块的第一个任务。
- 下一个区块:跳转到下一个区块。如果没有定义更多的区块,实验会结束。
- 上一个帧:跳转到上一个帧。如果没有上一个帧,则该动作不会执行。
- 特定帧:跳转到特定帧。用户直接选择要跳转的帧。
- 特定试验:跳转到特定试验。用户直接选择要跳转的试验编号。
- 特定任务:跳转到当前区块中指定任务的第一个实例。用户直接选择要跳转的任务。
- 特定区块:跳转到指定区块的第一个实例。用户直接选择要跳转的区块。
- 在跳转之前检查所需答案:如果启用,实验将检查所有所需答案是否已经回答。如果没有,跳转动作将不会被执行。
接受/结束会话动作
效果:接受参与者的数据,结束录制会话,并显示众包代码。
参数:
- 在结束会话之前记录试验数据:如果启用,最近的试验数据将(发送到服务器)存储在退出研究前。
- 显示默认结束页面:如果启用,将出现默认的Labvanced结束屏幕。如果这是众包会话(使用了众包链接),则补偿代码将显示给参与者。如果禁用,实验将结束,显示当前帧,而不显示带有补偿代码的默认结束屏幕。
拒绝/结束会话动作
效果:结束录制会话,不将参与者的数据标记为完整,也不显示带有补偿代码的默认结束屏幕。
在使用此动作拒绝参与者的数据时,用户应向参与者显示适当的信息,解释他们不会因其时间而受到奖励的原因。
参数:无
重定向到URL动作
效果:将参与者重定向到特定URL。
注意:URL前面必须包含https://,以使此动作正常工作。
控制动作
要求动作(如果...则...否则)动作
效果:评估一个if-then语句,并依赖性地执行一系列动作。每个If / Else-If语句由嵌套的AND / OR比较组成,以评估是否满足所有要求(语句为真)或不满足(语句为假)。如果语句为真,将执行在“则”下的动作。
参数:
- 添加要求:向语句添加新要求。在两侧将出现“值选择”菜单,以进行逻辑比较。您可以选择在语句中间两侧的比较方式(如:相等、小于、不等等)。
- 添加OR组: OR组中的所有要求中只有一个需要为真,整个组就为真。如果子动作应在几种情况下执行,则添加OR组。
- 添加AND组: AND组中的所有要求必须为真,整个组才为真。如果子动作只有在满足几种要求时才应执行,则添加AND组。
- 动作序列:每个If / Else-If语句都有一个在“则”下定义的动作列表。行动序列列出了特定If / Else-If语句的所有动作。可以通过“添加动作”图标添加新动作。只有在满足相关If / Else-if语句的要求时,行动序列才会执行。
- 添加Else-If案例:要求动作可以由几个单独的If / Else-If --> Then语句组成。然而,只能执行一个语句。如果一个If / Else-If语句被积极评估(返回真),则“则”块中的动作将被执行,而其他的要求动作将被跳过。
- 添加Else案例(真/假):如果启用,则向要求动作添加默认/后备选项。如果没有执行任何If / Else-If语句(返回真),则将执行else案例中定义的动作。
重复动作(While循环)动作
效果:重复执行一系列动作,可以立即执行或在定义的间隔内执行。可以指定停止条件,以便停止循环执行。
参数:
- 执行类型:选择立即执行或定时执行
- 执行完整循环:这将持续执行该循环,直到满足停止条件。
- 每...毫秒执行:这将以定义的间隔执行循环(例如,循环每50毫秒执行一次)。
- 定义循环次数:当选择“每...毫秒执行”时,用户可以为循环执行的次数分配一个数字整数值。这替代了定义停止条件的需要。
- 执行间隔:这将决定执行间隔。
- 立即开始(真/假):如果启用,这将立即执行循环。如果禁用,循环将在下一个执行间隔开始。
- 允许多次启动(真/假):如果启用,可以并行启动多个循环实例。如果禁用,则一次只能执行一个循环实例。
- 启用停止条件(真/假):如果启用,可以为循环指定停止条件。
- 停止条件:停止条件可用于指定循环执行应停止的逻辑表达式。类似于If / Else-If语句,可以组合AND组、OR组和要求进行逻辑比较。
- 动作序列:行动序列列出每次循环迭代中执行的所有动作。可以通过“添加动作”图标添加新动作。
延迟动作(时间回调)动作
效果:在一定时间延迟后执行一系列动作。
参数:
- 延迟类型:选择固定延迟或可变延迟
- 固定延迟:动作将在固定延迟后执行。
- 可变延迟:动作将在由(数字)变量指定的延迟后执行。
- 延迟:延迟的长度,以毫秒(ms)为单位。
- 动作序列:行动序列列出在指定时间延迟后执行的所有动作。可以通过“添加动作”图标添加新动作。
动作组
动作也可以组织成动作组。动作组允许您将某些动作组合在一起以便于视觉结构,但如果您希望一次复制、重复或删除多个动作,也是如此。要添加动作组,您可以在自定义动作下找到此选项:


API动作
如果您需要将数据从外部服务器发送或传达给Labvanced,则可以使用“API动作”和“API触发器”。您可以在此类别下使用以下动作:
- 发送到Websocket
- 发送到OpenAI
为了使这些动作“可用”或可用,您必须在设置选项卡下输入一个API密钥。

发送到Websocket动作

选择此动作时,将出现以下选项:

上述示例和完整事件结构可以通过点击“检查”来访问: https://www.labvanced.com/page/library/51053。
| 菜单项 | 描述 |
|---|---|
| 发送到: | 指定在设置选项卡下的特殊功能中列出的Websocket地址。 |
| 触发器/要发送的消息: | 指定要发送的触发器或消息。 |
| 发送变量(可选): | 指定还可以作为动作一部分发送的变量。 |
发送到OpenAI动作
“发送到OpenAI”动作允许您将信息(例如字符串输入值)发送给OpenAI。请注意,此选项可用,您必须在设置选项卡下的特殊功能中列出您的API密钥。

点击此事件后,将出现以下选项:

这是一个功能性示例,当提供所有必要的信息时,此事件的外观:

要更好地理解如何利用此功能并看到它的实际效果,请随时通过提交此联系表与我们联系以进行演示。
注意: 另请参考本指南,在其中我们逐步构建一项研究,整合ChatGPT并利用此动作。
以下是关于“发送到OpenAI”动作中包含的字段的更详细说明:
| 菜单项 | 菜单区域 | “发送到OpenAI”动作选项 |
|---|---|---|
模型类型 | ![]() | |
聊天历史数据框 | ![]() | 连接到一个具有两列的数据框变量。第一列将表示“角色”,第二列将表示“聊天消息”。该动作的值将自动附加到此处链接的数据框中。 数据框还可以通过数据框动作进行操作。有关进一步参考,请查看OpenAI的文档。 |
插入消息‘+’ | ![]() | 单击此按钮后,将出现变量对话框。您需要指明发送到OpenAI的“变量”值以及所关联消息的“角色”:
|
代码操作
在某些情况下,您的实验可能需要自定义代码。通过这些操作,您可以做到这一点!在“代码操作”菜单下提供以下选项:
- 运行JavaScript
- 设置全局CSS

运行JavaScript操作
“运行JavaScript”操作允许您编程特定事件,并通过输入自定义JavaScript来读取/设置Labvanced变量,该JavaScript将在被触发时作为操作运行。

选择上述“运行JavaScript”操作后,您将看到一个区域(代码编辑器),可以在其中编写JavaScript代码,以及关于如何使用它的说明:

设置全局CSS操作
通过“设置全局CSS”操作,您可以使用自定义CSS代码根据触发器更改研究的某一方面。

单击此操作后,以下字段将打开:

使用“设置全局CSS”操作的一个例子是,当参与者从多项选择问题中选择特定颜色时,改变研究的背景颜色。
粘贴操作
此选项允许您粘贴之前创建并复制的操作。它允许您在设计实验时更快地工作,这样您就不必一次又一次地选择相同的项目。例如,如果您有一个与已有事件相似的事件,您可以直接复制、粘贴并修改,而不是从头开始构建。
值选择菜单
在处理某些事件时,您会注意到一个笔图标出现。这称为值选择菜单,因为它允许您选择并指示要记录或跟踪什么类型的值。这是一个非常强大和重要的选项,您一定会在实验设计和设置中使用。
此笔图标/值选择菜单在事件系统中某些操作的不同位置出现,例如设置/记录变量操作、设置对象属性操作和要求(如果...那么)操作,如下所示。

单击笔图标会弹出下拉菜单,您可以在其中指定要读取或写入的值。**下拉菜单将始终首先列出与触发器特定值选项,然后继续其他5个类别(当前时间、常量值、变量、框架/任务/选项和操作),所有这些都有各自的选项。**这些将在下面进一步描述。

上面的图像显示了在使用鼠标触发器时值选择菜单的样子。正如您所看到的,左侧的第一个菜单项以特定于触发器的类别开始,然后转到另外5个类别(当前时间等)。
菜单选项
下表进一步解释了类别和选项:
| 类别 | 选项 | 描述 |
|---|---|---|
触发器特定 | 取决于您之前为事件选择的触发器类型。 | 基于您为事件选择的触发器,您将在值选择菜单的顶部看到一系列特定选项。请参阅触发器特定值部分,以查看完整选项及其描述。 |
当前时间 | 测量和调用时间值。 | |
常量值 |
| 根据您需要的变量类型(如字符串或数值)分配常量值。这些有时与其他选项(如算术)结合使用以创建计数器。 |
变量 |
| 指定或引用变量或从数组或数据框中选择值。 |
框架/任务/对象 |
| 允许您获取与对象属性、框架、眼动追踪(如果激活)和设备(屏幕刷新率)相关的值。 |
操作 |
| 使用操作对变量进行特定更改,例如合并变量值、将字符串转换为全小写或运行数学操作。 |
当前时间值
通过“当前时间”选项,您可以记录或引用与时间有关的值。
以下选项可用:
当前时间:UNIX时间戳
该值以毫秒的UNIX格式捕获时间戳。
当前时间:框架开始后的时间
该值捕获自框架开始以来经过的时间。通常这相当于反应时间。
常量值
根据您需要的变量类型(如字符串或数值)分配常量值。这些有时与其他选项(如算术)结合使用以创建计数器。
以下选项可用:
常量:字符串
分配一个字符串/文本值。
常量:数值
分配一个数值/数字值。
常量:布尔
分配一个真或假的值。
常量:类别
分配一个等级值(主要用于因子)。
常量:日期
分配一个日期值。
常量:时间
分配一个时间值。
常量:颜色
分配一个颜色(十六进制字符串)值。
变量值
指定或引用变量或从数组或数据框中选择值。以下选项可用:
选择变量
允许您选择并指向一个变量。
从数组中选择值
允许您从数组中选择一个值。
从数据框中选择值
允许您从您创建的数据框中选择一个值。
框架/任务/对象值
允许您获取与对象属性、框架、眼动追踪(如果激活)和设备(屏幕刷新率)相关的值。
对象属性
读取对象属性。
框架
| 框架值选项 | 描述 |
|---|---|
最后缓存的鼠标X坐标 | 参与者鼠标的最后X坐标值。 |
最后缓存的鼠标Y坐标 | 参与者鼠标的最后Y坐标值。 |
最后缓存的鼠标[X,Y]数组 | 以数组格式呈现的参与者鼠标的最后[X,Y]坐标值。 |
框架名称 | 框架的名称。 |
眼动追踪
| 眼动追踪值选项 | 描述 |
|---|---|
最后缓存的坐标X | 参与者凝视的最后X坐标值。 |
最后缓存的坐标Y | 参与者凝视的最后Y坐标值。 |
最后缓存的坐标[X,Y]数组 | 以数组格式呈现的参与者凝视的最后[X,Y]坐标值。 |
最后缓存的坐标+时间[X,Y,T]数组 | 以数组格式呈现的参与者凝视的最后[X,Y]坐标值,加上摄像头捕获T值。 |
设备
- 刷新率: 参加者设备的刷新率值。
操作
使用操作对变量进行特定更改,例如合并变量值、将字符串转换为全小写或运行数学操作。
以下选项可用:
算术
算术操作在许多不同的场合都非常有用,包括合并字符串甚至修改对象属性。

本质上,算术操作允许您对多个值执行操作。
选择此选项后,会出现一个额外的笔图标(即值选择菜单),以及一些操作列表,如加法。

可以通过使用这5种不同的操作来操作这些值:
- (+) 加法
- (-) 减法
- (/) 除法
- (*) 乘法
- (%) 取模
下面的示例展示了如何利用算术操作创建一个新的字符串变量(在绿色按钮中),称为'intermediateVar'。

新变量值('intermediateVar')是通过结合多个算术操作以及之前创建的变量(即'userChatName'和'chatInput')与常量字符串值(即分号:和换行符<br>)定义的。这个操作创建了一个用户聊天的效果,可以在多用户研究中使用。
字符串操作
| 字符串操作选项 | 描述 |
|---|---|
转为小写 | 将字符串变量中的所有字母更改为小写。 → 示例: (AAABBB) 变为 (aaabbb) |
转为大写 | 将字符串变量中的所有字母更改为大写。 → 示例: (aaabbb) 变为 (AAABBB) |
转为链接 | 将变量中的字符串转换为在另一个窗口中打开的URL |
移除空格 | 移除字符串变量中字母之间的任何空格。 → 示例: (aaa bbbb cccc) 变为 (aaabbbbccc) |
修剪空格 | 移除字符串变量开头的空格。 → 示例: ( aaabbbcccc) 变为 (aaabbbcccc) |
替换子串正则 | 替换字符串值变量中的某些字母。 → 示例: (aaabbbccc) 将_bbb_替换为_xxx_,结果值变为(aaaxxxccc) |
数学操作
对标量值执行数学操作。
| 数学操作选项 | 描述 |
|---|---|
绝对值 | 返回一个值的绝对数。 |
平方根 | 返回一个值的平方根。 |
四舍五入 | 返回四舍五入后的值,保留0到3位小数。 |
向下取整 | 返回向下取整的值。 |
向上取整 | 返回向上取整的值。 |
余弦值 | 返回余弦值。 |
正弦值 | 返回正弦值。 |
正切值 | 返回正切值。 |
触发器特定值
触发器特定值是指与特定事件中定义的触发器相关的值。例如,如果您的事件使用鼠标触发器,那么在指定操作的某些区域(如使用设置/记录变量操作或设置对象属性操作时),您可以在值选择菜单中引用鼠标触发器特定值。
在下面的示例中,鼠标触发器的触发器特定值用于通过设置/记录变量操作记录x值和y值以及[X,Y]数组。

以下是Labvanced中可以找到的所有触发器特定值的类型表,后面是每个选项的详细说明。
| 名称 | 值选项 - 概览 |
|---|---|
触发器(鼠标) |
|
触发器(键盘) |
|
触发器(按钮栏) |
|
触发器(输入时按回车) |
|
触发器(滚动) |
|
触发器(游戏手柄/摇杆) |
|
触发器(眼动追踪凝视) |
|
触发器(眼动追踪注视) |
|
触发器(头部追踪) |
|
触发器(任务初始化时) |
|
触发器(框架初始化时) |
|
触发器(在框架开始时) |
|
触发器(在框架结束时) |
|
触发器(变量值变化) |
|
触发器(媒体对象触发) |
|
触发器(Websocket触发) |
|
触发器(OpenAI触发) |
|
触发器(全局实验事件) |
|
触发器(用户离开实验) |
|
触发器(鼠标)值
当使用鼠标触发时,在处理某些操作时可以调用以下触发器特定值:

| 触发器(鼠标)选项 | 描述 |
|---|---|
鼠标X | 返回框架坐标中的当前鼠标X位置。 |
鼠标Y | 返回框架坐标中的当前鼠标Y位置。 |
鼠标[X,Y]数组 | 以数组格式呈现的鼠标[X,Y]坐标。 |
刺激名称 | 触发事件的对象的名称(例如,单击的图像)。 |
刺激信息 | 触发事件的对象的刺激信息。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(键盘)值
当使用键盘触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(键盘)选项 | 描述 |
|---|---|
键的ID | 被按下作为触发器的键的ID值。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(按钮栏)值
当使用按钮点击触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(按钮栏)选项 | 描述 |
|---|---|
刺激名称 | 触发事件的按钮对象的名称。 |
刺激信息 | 触发事件的按钮对象的刺激信息。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(输入时按回车)值
当使用输入时按回车触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(输入时按回车)选项 | 描述 |
|---|---|
键的ID | 被按下作为触发器的键的ID值。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(滚动)值
当使用滚动触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(滚动)选项 | 描述 |
|---|---|
刺激名称 | 触发事件的按钮对象的名称。 |
刺激信息 | 触发事件的按钮对象的刺激信息。 |
滚动位置X | 当事件被触发时,鼠标的X滚动位置。 |
滚动位置Y | 当事件被触发时,鼠标的Y滚动位置。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(游戏手柄/摇杆)值
当使用游戏手柄/摇杆触发时,在处理某些操作时可以调用以下触发器特定值:

| 触发器(游戏手柄/摇杆)选项 | 描述 |
|---|---|
游戏手柄设备ID | 已连接游戏手柄的ID或名称。 |
按下的键(数组) | 被按下的键。 |
按下或保持的键(数组) | 被按下或保持的键。 |
释放的键(数组) | 被释放的键。 |
轴(数组) | 轴的值。 |
游戏手柄时间戳(Unix时间) | 游戏手柄的Unix时间戳。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳。 |
触发器时间(从框架开始) | 相对于框架开始时,触发事件发生的Unix时间戳。 |
触发器(眼动追踪凝视)值
当使用眼动追踪凝视触发时,在处理某些操作时可以调用以下触发器特定值:

| 触发器(眼动追踪凝视)选项 | 描述 |
|---|---|
坐标X | 凝视的X坐标值。 |
坐标Y | 凝视的Y坐标值。 |
坐标[X,Y]数组 | 凝视的X,Y坐标以数组格式呈现。 |
刺激名称 | 引发凝视触发的刺激的名称。 |
刺激信息 | 引发凝视触发的刺激的信息。 |
摄像头捕获时间T | 发生快照的确切时间。在Labvanced眼动追踪流程中,摄像头快照在算法和神经网络执行凝视计算之前发生。因此,摄像头捕获时间T是初始快照发生的UNIX时间戳。有关我们基于网络摄像头的眼动追踪技术的更多信息,请参阅我们的眼动追踪技术页面。 |
凝视置信度C | 该值范围从0到1,表示在图像快照中有睁开的眼睛的置信度和概率,本质上充当“眨眼检测器”。有关更多详细信息,请参见我们已发表的同行评审论文链接。 |
坐标+时间[X,Y,T]数组 | 包含凝视的x/y坐标和摄像头捕获时间的时间戳(T)数组,如上所述。 |
坐标+时间+置信度[X,Y,T,C]数组 | 包含凝视的x/y坐标、摄像头捕获时间的时间戳(T)和凝视置信度(C)的数组,如上所述。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(眼动追踪注视)值
当使用眼动追踪注视触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(眼动追踪注视)选项 | 描述 |
|---|---|
注视中心X | 作为X值的注视中心点。 |
注视中心Y | 作为Y值的注视中心点。 |
注视持续时间 | 检测到的注视的持续时间。 |
注视开始时间 | 检测到的注视的开始时间。 |
注视结束时间 | 检测到的注视的结束时间。 |
注视扩散 | 指的是在检测到的注视内,凝视值的分散程度。 |
刺激名称 | 触发事件的按钮对象的名称。 |
刺激信息 | 触发事件的按钮对象的刺激信息。 |
[X,Y,Dur,Start,End,Disp] | 包含以下内容的数组:注视中心的x/y值、注视的持续时间、开始时间、结束时间和分散值。 |
触发器时间戳(Unix时间) | 触发事件发生时的Unix时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发事件发生时的经过时间(单位:毫秒)。 |
触发器(头部追踪)值
当使用头部追踪触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(头部追踪)选项 | 描述 |
|---|---|
摄像头捕获时间T | 摄像头捕获框架的时间,即发生框架捕获的Unix时间戳。这是图像/框架被捕获的时间,在任何处理发生之前。 |
头部旋转 | 从左到右的头部旋转,这在文献中称为俯仰。 |
头部倾斜 | 从上到下的头部倾斜,在文献中称为俯仰。 |
头部滚动 | 捕获头部从一侧滚动到另一侧的运动。 |
头部位置[X,Y,T]数组 | 该数组捕获与头部位置相关的数值,包括头部中心的x和y坐标以及时间戳变量(T)。 |
鼻子位置[X,Y,T]数组 | 该数组捕获与鼻子位置相关的数值,包括鼻子所在位置的x和y坐标以及测量发生时的时间戳变量(T)。 |
鼻子向量[X,Y,Z,T]数组 | 该测量通过从鼻尖投射向量工作,适用于测试参与者是否注意屏幕(这一点对于未启用眼动追踪的研究尤为重要)。因此,如果鼻子指向屏幕外(即参与者没有关注实验),Z值将从1降低并接近0。 |
触发器时间戳(Unix时间) | 实验中触发的时间点,其中检测到头部追踪,同时记录触发事件发生的时间。这是处理图像/帧的时间,因此该值在很大程度上受到参与者显卡的影响。理论上,它应该尽可能接近值T。 |
触发器时间(从框架开始) | 根据框架开始发生的时间值,触发事件发生的时间。 |
触发器(任务初始化时)值
当使用任务初始化触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(任务初始化时)选项 | 描述 |
|---|---|
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 触发器发生的时间,单位为毫秒,从框架开始计算。 |
触发器(框架初始化时)值
当使用框架初始化触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(框架初始化时)选项 | 描述 |
|---|---|
试验编号 | 框架初始化触发发生时的试验编号。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 触发器发生的时间,单位为毫秒,从框架开始计算。 |
触发器(在框架开始时)值
当使用框架开始触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(在框架开始时)选项 | 描述 |
|---|---|
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 触发器发生的时间,单位为毫秒,从框架开始计算。 |
触发器(在框架结束时)值
当使用框架结束触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(在框架结束时)选项 | 描述 |
|---|---|
总帧时间 | 在框架上花费的总时间,单位为毫秒。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 触发器发生的时间,单位为毫秒,从框架开始计算。 |
触发器(变量值变化)值
当使用变量值变化触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(变量值变化)选项 | 描述 |
|---|---|
变量中的新值 | 指的是变量的新值。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到发生变量值变化的经过时间(单位:毫秒)。 |
触发器(媒体对象触发)值
当使用媒体对象触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(媒体对象触发)选项 | 描述 |
|---|---|
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发媒体对象触发的经过时间(单位:毫秒)。 |
触发器(Websocket触发)值
当使用Websocket触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(Websocket触发)选项 | 描述 |
|---|---|
消息 | 可用于描述和标记的消息,允许您(在接收端)区分不同类型的数据。 |
数据 | 可以保存不同类型数据的值,例如参与者的选择、时间戳、鼠标x/y坐标等。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发Websocket触发的经过时间(单位:毫秒)。 |
触发器(OpenAI触发)值
当使用OpenAI触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(OpenAI触发)选项 | 描述 |
|---|---|
Chat GPT答案 | 来自ChatGPT的答案值。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发OpenAI触发的经过时间(单位:毫秒)。 |
触发器(全局实验事件)值
当使用暂停/继续实验触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(全局实验事件)选项 | 描述 |
|---|---|
总帧时间 | 指的是触发之前的总帧时间。 |
全局事件的原因 | 一个字符串值,表明触发的原因,例如参与者离开研究。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到发生全局事件触发的经过时间(单位:毫秒)。 |
触发器(用户离开实验)值
当使用参与者离开多用户研究触发时,在处理某些操作时可以调用以下触发器特定值:
| 触发器(用户离开实验)选项 | 描述 |
|---|---|
剩余参与者人数 | 研究中剩余的参与者人数。 |
触发器时间戳(Unix时间) | 触发器的时间戳,单位为毫秒。 |
触发器时间(从框架开始) | 从框架开始到触发用户离开实验的经过时间(单位:毫秒)。 |






















