事件系统

描述
事件系统是任何研究的关键。它是设置要记录的值、使实验进展以及创建任务的方法。用户可以创建一个事件系统来执行任务中的所有功能、逻辑和交互。事件通常充当对象和变量之间的中介。
- 有关触发器的完整列表,请参见 triggers
- 有关动作的完整列表,请参见 actions
- 有关在事件下设置值的 Value-Select 菜单 的更多信息

事件系统由 triggers 和 actions. 组成。在这里,您设置规则,例如“当发生此事件时”(触发器),“然后执行此操作”(动作)。例如:如果参与者点击特定图像(触发器),那么显示另一张随机图像(动作)。
有关事件在 Labvanced 中工作原理的介绍,请参考以下快速视频:
创建事件 - 概述
事件在任务编辑器的右上角的“事件”选项卡中进行管理。可以通过点击 + Frame Event(应在该帧上发生的事件)或点击 + Trial Event(将事件应用于所有帧)来创建新事件。所有现有事件都在右侧面板以列表视图显示。事件是在帧级别定义的,可以是每帧单独/特定的,或者在试验中每帧重复/相同。

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

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

下面的示例显示了一个“鼠标触发器”,当对“名为 Image_1 的目标”对象执行“左”鼠标点击时触发:

以下是您在处理鼠标触发器时可以使用的选项的完整概述:
| 菜单项 | 菜单区域 | 鼠标触发器选项和规格 |
|---|---|---|
动作 下拉列表: | ![]() | 下拉列表中的以下鼠标触发器选项可用:
|
按钮 下拉列表: | ![]() |
|
目标 选项: | 在上面的示例中,‘Image_1’ 是将触发事件的按钮点击的目标。 可以通过点击底部的 ‘+添加目标’ 选项添加多个目标。 |
|
- 注意: 在事件系统中选择鼠标触发器后,您可以选择在各种操作中利用和引用特定触发器的鼠标值,并使用value-select菜单。
键盘触发器
“键盘触发器”选项是另一种流行的事件触发方式。实际上,任何来自键盘的输入都可以作为触发器。这包括:按下、保持或释放一个键。

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

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

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

以下是所示项目的详细信息:
| 菜单项 | 菜单区域 | 按钮点击触发器选项 |
|---|---|---|
目标: +Set Target | ![]() | |
Button: 选项 | ![]() | 指定框架上哪个特定按钮 |
- 注意: 在事件系统中选择按钮点击触发器后,您可以选择在各种操作中利用和引用特定触发器的按钮点击值,并使用value-select菜单。
输入时按回车触发
触发条件:当特定元素处于活动状态时,按下键盘上的Enter/Return键。
参数:
添加目标:添加输入元素到事件中。
注意: 在事件系统中选择输入时按回车触发器后,您可以选择在各种操作中利用和引用特定触发器的输入时回车值,并使用value-select菜单。
滚动触发器
触发条件:在特定元素上使用滚动条、触控板滚动或鼠标滚轮。
参数:
- 选择滚动是在Y轴还是X轴(垂直滚动或水平滚动)。
目标:设置滚动触发器将应用于的目标元素。
注意:对于长文本,在‘对象属性’面板的‘样式’部分,Overflow-X和/或Overflow-Y选项需要选择scroll作为选项。
- 注意: 在事件系统中选择滚动触发器后,您可以选择在各种操作中利用和引用特定触发器的滚动值,并使用value-select菜单。
游戏手柄/操纵杆触发器
游戏手柄/操纵杆触发器允许您在实验设计中使用游戏手柄和操纵杆控制器作为输入设备来记录数据。 注意: 请记得在设置标签下启用此选项。
生理信号触发器
这些触发器仅在启用眼动追踪和/或头部追踪时适用。
眼动追踪凝视触发器
触发条件:
- 总体上,当启用眼动追踪时,此触发器会生效。
- 仅在查看特定元素时触发。
参数:
如果您选择只在特定元素上触发,请将这些元素添加为目标。
注意: 在事件系统中选择眼动追踪凝视触发器后,您可以选择在各种操作中利用和引用特定触发器的凝视值,并使用value-select菜单。
眼动追踪注视触发器
此触发器仍处于测试阶段。
- 注意: 在事件系统中选择眼动追踪注视触发器后,您可以选择在各种操作中利用和引用特定触发器的注视值,并使用value-select菜单。
头部追踪触发器
触发条件:
头部方向或头部运动的变化。
注意: 在事件系统中选择头部追踪触发器后,您可以选择在各种操作中利用和引用特定触发器的头部追踪值,并使用value-select菜单。
试验和帧触发器
任务初始化触发器
触发条件:
- 任务的第一次试验的第一帧。每个任务只会执行一次,尽管它在所有该帧的实例的事件标签中显示。
此触发器与Shuffle和Read From操作配合良好。通过这些组合,您可以在任务开始时随机数组条目或数据帧,并将受试者分配给刺激集,而无需创建多个事件来读取刺激或数据。
参数:无
- 注意: 在事件系统中选择任务初始化触发器后,您可以选择在各种操作中利用和引用特定触发器的任务初始化值,并使用value-select菜单。```markdown
帧初始化触发器
触发条件:
- 帧的初始化,在其对参与者可见之前。
此触发器与随机打乱、从中读取和随机数字绘制操作配合良好。通过这些组合,这些操作可以在帧显示之前完成,为其他操作在帧开始时留出清晰的路径。
注意: 不要将帧初始化触发器与记录变量或涉及系统变量(如试次编号或条件编号)的事件一起使用。这是因为帧初始化触发器发生在试次之间,因此无法准确计数即将显示的试次或条件。
参数:无
- 注意: 在事件系统中选择帧初始化触发器后,您可以在各种操作中利用和引用 特定于触发器的帧初始化值 ,通过 值选择菜单 。
关于任务和帧初始化触发器的注意事项: 由于任务和帧初始化触发器发生在任务或帧开始之前,在此期间创建的变量将在任务/帧实际开始时重置。使用此事件时将出现警告:

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

Websocket触发器
Websocket触发器在接收到来自websocket/API的消息时使用,该消息将被处理为操作的触发器。

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

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

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

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

如果您还使用 “发送到OpenAI”动作,则需要在此处指示的数据框中使用相同的数据框。
- 注意: 在事件系统中选择OpenAI触发器后,您可以在各种操作中利用和引用 特定于触发器的OpenAI值 ,通过 值选择菜单 。
接收到的PostMessage触发器
接收到的PostMessage 触发器在正在运行的实验收到来自外部源通过浏览器的postMessage API有消息时触发。它有助于将实验连接到父页面、自定义应用程序或发送数据到研究的嵌入式外部网站。
- 注意: 在事件系统中选择接收到的PostMessage触发器后,您可以在各种操作中利用和引用 特定于触发器的接收到的PostMessage值 ,通过 值选择菜单。
全局触发器
全局触发器在实验中出现重大变化时发生,例如,暂停实验或参与者离开多用户研究!以下选项被列为全局触发器:
- 暂停 / 恢复实验
- 参与者离开多用户研究

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



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

通过选择此触发器,您可以指定如果参与者离开多人研究将发生什么样的动作。

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

设置对象属性动作
使用“设置对象属性”动作,您可以通过指定相关对象、要更改的属性和新值,按您想要的方式改变对象的外观。
控制媒体对象动作
以前的“控制音频/视频”和“控制对象”分开动作。
效果:更改视频/音频元素的播放或更改上传/录制元素的状态。
参数:
- 目标:选择一个媒体对象
- 效果:选择一个子动作
- 音频或视频对象选项:
- 开始播放:开始播放视频/音频文件
- 停止播放:停止视频/音频文件
- 暂停播放:暂停视频/音频文件
- 跳转到时间:允许您指定音频/视频文件中的时间(毫秒)
- 静音:关闭对象的声音
- 取消静音:恢复对象的声音
- 音频、视频或屏幕录制对象选项:
- 开始录制:开始新的(音频)录制
- 停止录制:停止(音频)录制
- 开始上传:开始上传文件
- 清除录制:删除(音频)录制数据。
- 开始播放:开始播放录制的文件
- 停止播放:停止播放录制的文件
- 暂停录制:暂停对象的录制
- 恢复录制:恢复对象的录制
- 文件上传对象选项:
- 开始上传:开始选定文件的上传过程
- 清除文件:删除选定的文件
- 选择文件:允许参与者选择所需的文件
- 摄像机快照对象选项:
- 启动摄像机:打开参与者的摄像头
- 停止摄像机:关闭参与者的摄像头
- 开始上传:开始将快照上传到实验
- 拍摄快照:使用参与者的摄像头拍照
- 音频或视频对象选项:
复制对象动作
效果:复制一个对象,取代多个单独对象和重复事件的需要。
参数:
- 源:选择要复制的框架上的对象。
- 复制数量:输入要制作的源对象的副本数量。
- 设置新元素名称:从多个参数中选择以确定副本的名称。
- 带递增后缀的名称:在新元素名称的末尾添加数字标签,以区分副本。
- 动作序列:允许您选择(从常规动作列表中)将对副本执行的操作。选择“CurrentObject”作为目标以将动作应用于所有副本。```markdown
ForEach Object Action
效果:对多个相同类型的对象应用一个操作。
参数:
- 过滤器:选择要定位的元素类型。
- 允许附加名称过滤:输入要定位的对象名称。对于在框架中某些名称相同的多个对象,这将有效。
- 操作序列:允许您从通常的操作列表中选择将对所选元素执行的操作。选择“CurrentObject”作为目标,以对所有满足上述指定条件的元素应用操作。
变量操作
变量操作用于设置或创建变量值,记录和定义值,包括跨会话的值。

下表提供了 Labvanced 中所有可用变量操作选项的简介。每个选项将在接下来的部分中更详细地描述。
| 变量操作选项 | 描述 |
|---|---|
Set / Record Variable | 写入或设置变量值 |
Copy to Clipboard | 将变量值复制到计算机的内部剪贴板。 |
Draw Random Number | 随机抽取一个或多个随机数并将其保存到变量中 |
Get URL Parameter | 从参与者的唯一 URL 中保存一个值 |
Read from / Write to Device | 从本地设备的存储中读取或写入变量。此操作将数据保存到参与者的设备中,而不是将数据发送到 Labvanced 服务器。 |
Read from / Write to Shared Variable | 从跨研究会话共享的变量中读取或写入数据。变量可以与所有参与者共享,也可以是每个参与者私有。 |
Math & Statistics | 执行输入变量(数组)的数学运算,并将结果保存到输出变量中。 |
Record Variables Instantly | 创建所有变量值的快照并将其发送到 Labvanced 服务器。 |
Moving Average Filter | 计算某些输入的移动平均值(数据的不断更新的平均)并将结果存储在新变量中。 |
Distribute Variable | 将一个值发送给其他参与者。该值存储在一个变量中。 |
Set / Record Variable Action
“Set / Record Variable” 操作将在 Labvanced 中的每个实验中使用,因为它是存储和记录值和行为度量的方式。

单击此操作后,将出现以下对话框菜单,您可以指定要记录的变量以及感兴趣的值:

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

下图记录鼠标的 X,Y 坐标,以便在研究过程中捕捉鼠标跟踪。下图显示了使用三个操作使变量值记录成为可能的过程。左侧的变量是手动创建的,而等号(=)右侧的值是系统提供的鼠标触发特定值,您可以在记录值时进行引用。

注意: Set / Record Variable 操作在 控制操作 的上下文中也常被使用,在这里您可以根据变量值使用“如果 / 则”和“循环”来指定条件。
Copy to Clipboard Action
效果:将变量值复制到计算机的内部剪贴板。
Draw Random Number Action
效果:抽取一个或多个随机数并将其保存到变量中
参数:
- 类型:选择连续值和离散值
- 分布:选择高斯分布和均匀分布
- 多次抽取(布尔值 true/false):选择一次抽取或多次抽取。
- 抽取次数:选择抽取的次数
- 最小值:定义均匀分布的最小值
- 最大值:定义均匀分布的最大值
- 均值:定义高斯分布的均值
- 标准差:定义高斯分布的标准差
- 保存到变量:选择一个变量以存储该值。
Get URL Parameter Action
效果:从参与者的唯一 URL 中保存一个值
参数:
- 参数名称:输入所需参数的名称
- 保存到变量:选择要将参数值保存到的变量
此操作可以与其他操作结合使用,以为参与者构建唯一 URL 或提取数据分析所需的信息。
Read from/Write to Device Action
效果:从本地设备的存储中读取或写入变量。此操作将数据保存到参与者的设备中,而不是将数据发送到 Labvanced 服务器。
参数:
- 选择从本地设备读取或写入。
- 选择要读取或写入的变量。
用例:长时间跟踪/多会话研究
- 使用此操作,设备特定的数据可以从会话传递到会话,只要相同的参与者在每个会话中使用相同的设备。
- 例如,您可以使用此操作记录在会话 1 中展示给每个参与者的图像,并确保在会话 2 中向他们展示不同的图像。
- 创建一组图像,并在每个会话中随机选择一些进行展示。
- 写入设备:在会话 1 中展示的图像的索引号。
- 从设备读取:在会话 2 中,读取会话 1 中图像的索引,并包含一个 JavaScript 操作,以防止在第二个会话中选择这些索引。
Read from/Write to Shared Variable Action
效果:从跨会话共享的变量中读取或写入数据。变量可以与所有参与者共享,也可以是每个参与者私有。
参数:
- 选择要同步的变量。必须是标量或数组。
- 高级选项
- 存储键:选择一个变量名称作为访问同步变量的键。
- 读取或写入方法:
- 读取、修改,然后写入共享变量:读取变量,进行更改,然后将变量发送到研究中。
- 仅从服务器读取共享值:调用在研究中共享的变量,但不做任何更改。
- 仅将变量写入服务器:对共享变量进行更改,但不向参与者显示。
- 在不同参与者之间共享值(不仅是在会话之间):允许参与者跨会话查看彼此的同步变量值。此选项默认选中,但可以通过单击复选框取消选中。
- 操作序列:
- 从所有可用操作列表中选择共享/同步变量要执行的操作。
用例:长时间跟踪/多会话研究
- 使用此操作,可以将特定于参与者的数据从会话传递到会话,并能够在会话之间与参与者共享。
- 例如,您可以使用此操作记录测试的分数,然后允许参与者将自己的分数与完成测试的其他参与者的平均分数进行比较。
- 另一个示例(类似于从/写入设备操作)是让参与者从一组中选择 5 张他们喜欢的图像,执行一个任务,然后在以后的会话中再次展示这 5 张图像。不同之处在于,此操作可以用于向其他参与者展示所选的图像,或将这些图像从另一个参与者可用的选项中排除。
#### 数学与统计操作
效果:对某个输入变量(数组)执行数学运算,并将结果保存在输出变量中。
参数:
* 类型:选择数组操作、线性代数和统计测试
* 操作:选择一种数学运算(例如:求和、最小值、标准差等)
* 输入数组:选择对其执行操作的输入变量(数组)
* 参数:某些操作具有额外参数。
* 输出:选择用于存储结果的输出变量。
#### 立即记录变量操作
效果:创建所有变量值的快照并将其发送到 Labvanced 服务器。
参数:无
#### 移动平均滤波器操作
效果:计算某个输入的移动平均值(数据的不断更新的平均值),并将结果存储在一个新变量中。
参数:
* 滤波器形状:选择滤波器类型
* 简单移动平均:计算简单移动平均值,其中所有样本具有相同的权重。
* 线性加权移动平均:对样本进行加权,使样本的权重线性递减。
* 指数加权移动平均:对样本进行加权,使样本的权重指数递减。
* 样本数量:决定每步使用多少个样本。
* 输入:选择对其计算移动平均的输入变量(数组)
* 输出:选择用于存储结果的输出变量。
#### 分发变量操作
分发变量操作是 [Labvanced 中多用户研究的核心。](https://www.labvanced.com/content/technology/zh/multi-user-psychology-studies/) 通过此操作,可以在参与者之间共享变量值,从而允许信息(包括刺激位置和任何更改)反映在参与者的屏幕上。
<p style="text-align:center;">
<img src="/content_imgs/learn/guide/task-editor/imgs/events/distribute_variable_menu.webp" alt="Labvanced 操作菜单中的分发变量操作。" width="80%" style="border:1px solid #39AECB" height="auto" loading="lazy">
</p>
选择此操作后,将出现以下对话框,您可以在其中指定在参与者之间分发的变量值。
下图是功能分发变量操作对话框的样子,当所有菜单项都填写完整时。在这个例子中,分发变量是一个操作,作为通过分发输入字段对象中的变量值来创建两个参与者之间聊天的方式。
<p style="text-align:center;">
<img src="/content_imgs/learn/guide/task-editor/imgs/events/distribute_variable_example.webp" alt="分发变量的使用示例,所有菜单选项已设置。" width="80%" style="border:1px solid #39AECB" height="auto" loading="lazy">
</p>
查看此演示,其中包含分发变量和聊天框功能:[带聊天附加功能的图像描述任务。](https://www.labvanced.com/page/library/3008)
对话菜单项的完整说明如下:
| 菜单项 | 菜单区域 | 分发变量操作选项及描述 |
|:-----:|-----| ---------|
| **`分发值到`** |  | 选择值应发送到哪些其他参与者。 <ul><li>**所有参与者:**将此值发送给所有参与者</li><li>**选择的参与者:**将值发送给选定的参与者。 </li></ul> |
| **`选择目标变量和值`** |  | <ul><li> **目标变量:**选择一个目标变量,值将存储于此。</li><li>**值:**确定应发送给其他参与者的值。</li> </ul>|
| **`阻止`** |  | 如果启用,目标变量在当前值分发完成之前不能被更改。 |
| **`速率限制策略`**|  | 速率限制策略是一种保护您的实验不超出服务器的方式,并作为控制发送到服务器的请求(即通过分发变量更新)的速率的预防策略。可用的策略选项如下: <ul><li>**防抖动:**当此操作在100毫秒时间窗口内执行多次时,新服务器消息将被“防抖动”(在不执行此操作的100毫秒间隔后,仅发送最新消息)。</li><li>**节流:**当此操作在100毫秒时间窗口内执行多次时,新消息将被节流(即在自上一个消息发送后的100毫秒过去后,仅分发最近的消息)。</li><li>**丢弃:**当此操作在100毫秒时间窗口内执行多次时,将丢弃该100毫秒窗口内的新消息。</li><li>**排队:**当此操作在100毫秒时间窗口内执行多次时,将新变量值排队(最大队列大小为10条消息)。</li></ul> |
### 数组操作
#### 从数组中选择(读取)操作
效果:将从数组中读取一个变量,并将该值存储在一个标量变量中。
参数:
* 数组变量:用于读取值的输入数组。
* 索引类型:决定使用何种索引。
* 固定:在读取操作中使用固定索引。在这种情况下,输入信息应从哪个位置读取(基于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 情况中定义的操作。
重复操作(循环)操作
效果:重复地执行一系列操作,可以立即执行或在定义的间隔内执行。可以指定停止条件,以便停止循环执行。
参数:
- 执行类型:选择立即执行或定时执行
- 执行完整循环:这将持续执行循环,直到满足停止条件。
- 每 ... 毫秒执行:这将以定义的间隔执行循环(例如:每 50 毫秒执行一次循环)。
- 定义循环次数:当选择“每 ... 毫秒执行”时,用户可以指定一个数值整数值,表示循环应执行的次数。这取代了定义停止条件的需要。
- 执行间隔:这决定了执行间隔。
- 立即开始(真/假):如果启用,将立即执行循环。如果禁用,循环将在下一个执行间隔开始。
- 允许多次启动(真/假):如果启用,可以并行启动多个循环实例。如果禁用,只能同时执行一个循环实例。
- 启用停止条件(真/假):如果启用,可以指定循环的停止条件。
- 停止条件:停止条件可用于指定逻辑表达式,以确定何时应停止循环执行。类似于 If / Else-If 语句,可以组合 AND 组、OR 组和需求进行逻辑比较。
- 操作序列:操作序列列出了循环每次迭代时执行的所有操作。可以通过“添加操作”图标添加新操作。
延迟操作(时间回调)操作
效果:在特定的时间延迟后执行一系列操作
参数:
- 延迟类型:选择固定延迟或可变延迟
- 固定延迟:在固定延迟后执行操作。
- 可变延迟:在一个(数值)变量指定的延迟后执行操作。
- 延迟:延迟的长度,以毫秒(ms)计算。
- 操作序列:操作序列列出了在指定时间延迟后执行的所有操作。可以通过“添加操作”图标添加新操作。
操作组
操作还可以组织成 操作组。 操作组允许您将某些操作分组以便于视觉结构,但同样如果您想同时复制、重复或删除多个操作。
API 操作
如果您需要从外部服务器向 Labvanced 发送或传达数据,那么可以使用“API 操作”和 “API 触发器”。在此类别下,您可以使用以下操作:
- 发送 PostMessage
- 发送到 Websocket
- 发送到 OpenAI
为了使这些操作“可用”或可使用,您必须在 设置 选项卡下输入 API 密钥。

发送 PostMessage 操作
发送 PostMessage 操作使用浏览器的 postMessage API 将来自正在运行的 Labvanced 实验的消息发送到外部目标,例如父网页或嵌入的框架。
发送到 Websocket 操作

选择此操作时,会出现以下选项:

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

单击此事件后,会出现以下选项:

这是一个功能示例,展示了在提供所有必要信息时此事件的样子:

注意: 还请参阅此指南,我们将逐步构建一个研究,集成ChatGPT并利用该操作。
下面是“发送到OpenAI”操作中包含的字段的详细解释:
| 菜单项 | 菜单区域 | “发送到OpenAI”操作选项 |
|---|---|---|
模型类型 | ![]() | |
聊天历史数据框 | ![]() | 链接到一个具有两列的数据框。第一列表示“角色”,第二列表示“聊天信息”。操作的值会自动附加到此处链接的数据框。 数据框还可以通过数据框操作进行操作。有关更多参考,请查看OpenAI的文档。 |
插入消息 ‘+’ | ![]() | 单击此项后,变量对话框将出现。您需要指明哪个“变量”值将被发送到OpenAI,以及相关消息的“角色”:
|
由于OpenAI每天都在演进,请查看OpenAI的文档以获取进一步的说明。
代码操作
在某些情况下,您的实验可能需要您使用自定义代码。借助这些操作,您可以做到这一点!以下选项在“代码操作”菜单中可用:
- 运行JavaScript
- 设置全局CSS

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

当选择上述“运行JavaScript”操作时,您将看到一个区域(代码编辑器),可以在其中编写JavaScript代码,此外还将提供如何使用它的说明:

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

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

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

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

上图显示了当使用鼠标触发时值选择菜单的样子。正如您所看到的,左侧的第一个菜单项始于特定于触发器的类别,然后进入其他5个类别(当前时间等)。
菜单选项
下表进一步解释了类别和选项:
| 类别 | 选项 | 描述 |
|---|---|---|
特定于触发器 | 取决于您之前为事件选择的触发器类型。 | 基于您为事件选择的触发器,您将在值选择菜单的顶部看到具体的选项列表供您选择。请参考下方有关特定于触发器的值的部分,以查看完整的选项和描述。 |
当前时间 | 测量和调用时间值。 | |
常量值 |
| 根据所需的变量类型(如字符串或数字)分配常量值。这些有时与其他选项(例如算术)结合使用以创建计数器。 |
变量 |
| 指定或引用变量,或从数组或数据框中选择值。 |
框架/任务/对象 |
| 允许您提取与对象属性、框架、眼动跟踪(如果已激活)和设备(屏幕刷新率)相关的值。 |
操作 |
| 使用操作对您的变量执行指定的更改,例如组合变量值、将字符串转换为小写或进行数学运算。 |
当前时间值
使用“当前时间”选项,您可以记录或引用与时间相关的值。
以下选项可用:
当前时间:UNIX时间戳
此值以UNIX格式捕获时间戳(以毫秒为单位)。
当前时间:框架起始时间
此值捕获从框架起始时间过去的时间。通常情况下,这相当于反应时间。
常量值
根据所需的变量类型(如字符串或数字)分配常量值。这些有时与其他选项(例如算术)结合使用以创建计数器。
以下选项可用:
常量:字符串
分配字符串/文本值。
常量:数字
分配数字/数值。
常量:布尔
分配true或false的值。
常量:分类
分配水平值(主要用于因子)。
常量:日期
分配日期值。
常量:时间
分配时间值。
常量:颜色
分配颜色(十六进制字符串)值。
变量值
指定或引用变量,或从数组或数据框中选择值。以下选项可用:
从数组中选择值
允许您从数组中选择一个值。
从数据框架中选择值
允许您从您创建的数据框架中选择一个值。
框架 / 任务 / 对象值
允许您获取与对象属性、框架、眼动追踪(如果已激活)和设备(屏幕刷新率)相关联的值。
对象属性
读取对象属性。
框架
| 框架值选项 | 描述 |
|---|---|
最后缓存的鼠标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) |
数学运算
对标量值执行数学运算。
| 数学运算选项 | 描述 |
|---|---|
abs | 返回值的绝对值。 |
sqrt | 返回值的平方根。 |
round | 返回四舍五入的值,保留0到3位小数。 |
floor | 返回向下取整的值。 |
ceil | 返回向上取整的值。 |
cos | 返回余弦值。 |
sin | 返回正弦值。 |
tan | 返回正切值。 |
触发特定值
触发特定值是指与特定事件中的触发器关联的值。例如,如果您的事件使用鼠标触发器,则在指定操作的某些区域(例如在使用设置/记录变量操作或设置对象属性操作时),您可以在value select menu中引用鼠标触发特定值。
在下面的示例中,使用鼠标触发的特定值记录x和y值以及使用设置/记录变量操作的[X,Y]数组。

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

| 触发器(鼠标)选项 | 描述 |
|---|---|
Mouse X | 返回当前鼠标 X 位置的框架坐标。 |
Mouse Y | 返回当前鼠标 Y 位置的框架坐标。 |
Mouse [X,Y] Array | 以数组格式表示的鼠标 [X,Y] 坐标。 |
Stimulus Name | 触发事件的对象名称(例如,点击的图像)。 |
Stimulus Info | 触发事件的对象的刺激信息。 |
Trigger Timestamp (Unixtime) | 触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到触发发生所测量的经过时间(毫秒)。 |
触发器(键盘)值
当使用 键盘触发器 时,当处理某些操作时,可以调用以下触发器特定值:
| 触发器(键盘)选项 | 描述 |
|---|---|
Id of Key | 作为触发器被按下的键的 ID 值。 |
Trigger Timestamp (Unixtime) | 触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到触发发生所测量的经过时间(毫秒)。 |
触发器(按钮条)值
当使用 按钮点击触发器 时,当处理某些操作时,可以调用以下触发器特定值:
| 触发器(按钮条)选项 | 描述 |
|---|---|
Stimulus Name | 触发事件的按钮对象名称。 |
Stimulus Info | 触发事件的按钮对象的刺激信息。 |
Trigger Timestamp (Unixtime) | 触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到触发发生所测量的经过时间(毫秒)。 |
触发器(输入上按 Enter)值
当使用 输入上按 Enter 触发器 时,当处理某些操作时,可以调用以下触发器特定值:
| 触发器(输入上按 Enter)选项 | 描述 |
|---|---|
Id of Key | 作为触发器被按下的键的 ID 值。 |
Trigger Timestamp (Unixtime) | 触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到触发发生所测量的经过时间(毫秒)。 |
触发器(滚动)值
当使用 滚动触发器 时,当处理某些操作时,可以调用以下触发器特定值:
| 触发器(滚动)选项 | 描述 |
|---|---|
Stimulus Name | 触发事件的按钮对象名称。 |
Stimulus Info | 触发事件的按钮对象的刺激信息。 |
Scroll Position X | 触发事件时鼠标的 X 滚动位置。 |
Scroll Position Y | 触发事件时鼠标的 Y 滚动位置。 |
Trigger Timestamp (Unixtime) | 触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到触发发生所测量的经过时间(毫秒)。 |
触发器(游戏手柄/操纵杆)值
当使用 游戏手柄/操纵杆触发器 时,当处理某些操作时,可以调用以下触发器特定值:

| 触发器(游戏手柄/操纵杆)选项 | 描述 |
|---|---|
Gamepad Device Id | 连接的游戏手柄的 ID 或名称。 |
Pressed Keys (Array) | 已按下的键。 |
Pressed OR Hold Keys (Array) | 已按下或保持的键。 |
Released Keys (Array) | 已释放的键。 |
Axes (Array) | 轴的值。 |
Gamepad Timestamp (Unixtime) | 游戏手柄时间戳(Unix 时间)。 |
Trigger Timestamp (Unixtime) | 触发发生的时间戳(Unix 时间)。 |
Trigger Time (From Frame Onset) | 触发发生时与框架开始的相对时间戳(Unix 时间)。 |
触发器(眼动追踪注视)值
当使用 眼动追踪注视触发器 时,当处理某些操作时,可以调用以下触发器特定值:

| 触发器 (眼动追踪注视) 选项 | 描述 |
|---|---|
Coordinate X | 注视的 X 坐标值。 |
Coordinate Y | 注视的 Y 坐标值。 |
Coordinate [X,Y] Array | 以数组格式表示的注视坐标 X,Y。 |
Stimulus Name | 发起注视触发的刺激名称。 |
Stimulus Info | 发起注视触发的刺激的刺激信息。 |
Camera Capture Time T | 快照发生的确切时间。在 Labvanced 的眼动追踪流程中,快照在算法和神经网络执行注视计算之前首先发生。因此,Camera Capture Time T 是初始快照发生时的 UNIX 时间戳。有关我们基于网络摄像头的眼动追踪技术的更多信息,请参阅我们的 ET 技术页面。 |
Gaze Confidence C | 该值范围从 0 到 1,表示图像快照中存在睁眼的信心和概率,基本上作为“眨眼检测器”。有关更多详细信息,请参阅我们的 发表的同行评审论文。 |
Coord. + Time [X,Y,T] Array | 包含注视的 x/y 坐标和快照时间戳 (T) 的数组,如上所述。 |
Coord. + Time + Confidence [X,Y, T,C] Array | 包含注视的 x/y 坐标、快照时间戳 (T) 和注视置信度 (C) 的数组,如上所述。 |
Trigger Timestamp (Unixtime) | 注视触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到注视触发发生所测量的经过时间(毫秒)。 |
触发器(眼动追踪注视)值
当使用 眼动追踪固定触发器 时,当处理某些操作时,可以调用以下触发器特定值:
| 触发器 (眼动追踪固定) 选项 | 描述 |
|---|---|
Fixation Centroid X | 固定的中心点作为 X 值。 |
Fixation Centroid Y | 固定的中心点作为 Y 值。 |
Fixation Duration | 检测到的注视持续时间。 |
Fixation Start Time | 检测到的注视开始时间。 |
Fixation End Time | 检测到的注视结束时间。 |
Fixation Dispersion | 指的是在检测到的注视中,注视值的分散程度。 |
Stimulus Name | 触发事件的按钮对象名称。 |
Stimulus Info | 触发事件的按钮对象的刺激信息。 |
[X, Y, Dur, Start, End, Disp] | 以下的数组:注视中心的 x 和 y 值、注视的持续时间、开始时间、结束时间和分散值。 |
Trigger Timestamp (Unixtime) | 固定触发发生的时间戳,格式为 Unix 时间,精确到毫秒。 |
Trigger Time (From Frame Onset) | 从框架开始到固定触发发生所测量的经过时间(毫秒)。 |
Trigger (头部跟踪) 值
当使用 头部跟踪触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (头部 跟踪) 选项 | 描述 |
|---|---|
Camera Capture Time T | 相机捕获帧的时间,即帧捕获发生时的 Unix 时间戳。这是图像/帧被捕获的时间,处理发生之前。 |
Head Turn | 头部从左到右的转动,文献中称之为俯仰(yaw)。 |
Head Tilt | 头部从上到下的倾斜,在文献中称之为头部俯仰(pitch)。 |
Head Roll | 捕获头部左右滚动的运动。 |
Head Position [X,Y, T] Array | 该数组捕获与头部位置相关的数字值,包括头部中心的 x 和 y 坐标及时间戳变量 (T)。 |
Nose Position [X,Y, T] Array | 该数组捕获与鼻子位置相关的数字值,包括鼻子位置的 x 和 y 坐标及测量发生时的时间戳变量 (T)。 |
Nose Vector [X,Y, Z, T] Array | 该测量通过从鼻尖投影出一个向量来工作,适用于测试参与者是否注意到屏幕(这对未启用眼动追踪的研究尤其重要)。因此,如果鼻子指向屏幕外(即参与者没有关注实验),则 Z 值从 1 降低并趋近于 0。 |
Trigger Timestamp (Unixtime) | 实验中触发器发生的时间点,检测到头部跟踪并记录触发在系统中发生的时间。本质上,这是处理图像/帧时的时间,此值受到参与者显卡的很大影响。理论上,它应尽可能接近值 T。 |
Trigger Time from Frame Onset | 这是触发器发生的时间,与帧开始发生的时间有关。 |
Trigger (任务初始化) 值
当使用 任务初始化触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (任务初始化) 选项 | 描述 |
|---|---|
Trigger Timestamp (Unixtime) | 触发器的 Unix 时间戳,以毫秒为单位。 |
Trigger Time (From Frame Onset) | 从帧开始到触发器发生的毫秒时间。 |
Trigger (帧初始化) 值
当使用 帧初始化触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (帧初始化) 选项 | 描述 |
|---|---|
TrialNr | 帧初始化触发器发生时的试验编号。 |
Trigger Timestamp (Unixtime) | 触发器的 Unix 时间戳,以毫秒为单位。 |
Trigger Time (From Frame Onset) | 从帧开始到触发器发生的毫秒时间。 |
Trigger (帧开始) 值
当使用 帧开始触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (帧开始) 选项 | 描述 |
|---|---|
Trigger Timestamp (Unixtime) | 触发器的 Unix 时间戳,以毫秒为单位。 |
Trigger Time (From Frame Onset) | 从帧开始到触发器发生的毫秒时间。 |
Trigger (帧结束) 值
当使用 帧结束触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (帧结束) 选项 | 描述 |
|---|---|
Total Frame Time | 在帧上花费的总时间(以毫秒为单位)。 |
Trigger Timestamp (Unixtime) | 触发器的 Unix 时间戳,以毫秒为单位。 |
Trigger Time (From Frame Onset) | 从帧开始到触发器发生的毫秒时间。 |
Trigger (变量值变化) 值
当使用 变量值变化触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (变量值变化) 选项 | 描述 |
|---|---|
New Value in Variable | 指变量的新值。 |
Trigger Timestamp (Unixtime) | 变量变化触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到变量值变化发生的经过时间(以毫秒为单位)。 |
Trigger (媒体对象触发器) 值
当使用 媒体对象触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (媒体对象触发器) 选项 | 描述 |
|---|---|
Trigger Timestamp (Unixtime) | 媒体对象触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到媒体对象触发器发生的经过时间(以毫秒为单位)。 |
Trigger (Websocket触发器) 值
当使用 Websocket触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (Websocket触发器) 选项 | 描述 |
|---|---|
Message | 一条消息,可用于描述和标记,使您(接收方)能够在不同类型的数据之间进行过滤。 |
Data | 可存储不同类型数据的值,例如参与者的选择、时间戳、鼠标 x/y 坐标等。 |
Trigger Timestamp (Unixtime) | Websocket触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到WebSocket触发器发生的经过时间(以毫秒为单位)。 |
Trigger (OpenAI触发器) 值
当使用 OpenAI触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (OpenAI触发器) 选项 | 描述 |
|---|---|
Chat GPT Answer | ChatGPT 返回的答案值。 |
Trigger Timestamp (Unixtime) | OpenAI触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到OpenAI触发器发生的经过时间(以毫秒为单位)。 |
Trigger (PostMessage 接收) 值
当使用 PostMessage 接收触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (PostMessage 接收) 选项 | 描述 |
|---|---|
Message Content | 外部来源发送的接收到的 postMessage 的数据有效负载。 |
Trigger Timestamp (Unixtime) | PostMessage 接收触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到触发器发生的经过时间(以毫秒为单位)。 |
Trigger (全局实验事件) 值
当使用 暂停 / 恢复实验触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (全局实验事件) 选项 | 描述 |
|---|---|
Total Frame Time | 指在触发前总帧时间。 |
Reason for Global Event | 表示触发原因的字符串值,例如参与者离开研究。 |
Trigger Timestamp (Unixtime) | 全局事件触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到全局事件触发器发生的经过时间(以毫秒为单位)。 |
Trigger (用户离开实验) 值
当使用 参与者离开多用户研究触发器 时,可以在处理某些操作时调用以下特定于触发器的值:
| 触发器 (用户 离开实验) 选项 | 描述 |
|---|---|
Remaining Number of Participants | 研究中剩下的参与者数量。 |
Trigger Timestamp (Unixtime) | 用户离开实验触发器发生时的时间戳,Unix 时间格式(带毫秒)。 |
Trigger Time (From Frame Onset) | 从帧开始到用户离开实验触发器发生的经过时间(以毫秒为单位)。 |










