labvanced logoLabVanced
  • Research
    • Publications
    • Researcher Interviews
    • Use Cases
      • Behavioral Psychology
      • Personality & Social Psychology
      • Cognitive & Neuro Psychology
      • Developmental & Educational Psychology
      • Clinical & Health Psychology
      • Sports & Movement Psychology
      • Marketing & Consumer Psychology
    • Labvanced Blog
  • Technology
    • Feature Overview
    • Desktop App
    • Phone App
    • Precise Timing
    • Experimental Control
    • Eye Tracking
    • Multi User Studies
    • More ...
      • Questionnaires
      • Artificial Intelligence (AI) Integration
      • Mouse Tracking
      • Data Privacy & Security
  • Learn
    • Guide
    • Videos
    • Walkthroughs
    • FAQ
    • Release Notes
    • Documents
    • Classroom
  • Experiments
    • Public Experiment Library
    • Labvanced Sample Studies
  • Pricing
    • Pricing Overview
    • License Configurator
    • Single License
    • Research Group
    • Departments & Consortia
  • About
    • About Us
    • Contact
    • Downloads
    • Careers
    • Impressum
    • Disclaimer
    • Privacy & Security
    • Terms & Conditions
  • 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 发布研究的要求
        • 招募参与者和众包
        • 许可证选择与确认
        • 发布您的 Labvanced 研究后
      • 共享
      • 参与者
      • 数据查看与导出
        • 数据视图和变量 & 任务选择(旧版本)
        • 访问录音(旧版本)
  • 视频
    • 视频概览
    • 在 Labvanced 中开始使用
    • 创建任务
    • 元素视频
    • 事件与变量
    • 高级主题
  • 逐步指导
    • 简介
    • 斯特鲁普任务
    • 词汇决策任务
    • 波斯纳注视提示任务
    • 改变失明闪烁范式
    • 眼动追踪示例研究
    • 婴儿眼动追踪研究
    • 鼠标追踪下的注意力捕获研究
    • 快速串行视觉呈现
    • ChatGPT 研究
    • 眼动追踪演示:将SVG作为兴趣区
    • 多用户演示:在研究中显示参与者的光标
    • 游戏手柄/操纵杆控制器 - 基本设置
    • 带有 EEG 集成的桌面应用研究
  • 常见问题
    • 功能
    • 安全性与数据隐私
    • 许可
    • Labvanced 的精度
    • 程序化使用与 API
    • 离线使用 Labvanced
    • 故障排除
    • 研究创建问题
  • 版本说明
  • 教室

事件系统

描述

事件系统对于任何研究都是必不可少的。它用于设置要记录的值、使实验进展以及创建任务。用户可以创建事件系统来执行任务中的所有功能、逻辑和交互。事件通常充当对象和变量之间的中介。

事件系统由触发器和动作组成。在这里你设置规则,比如“当发生这种情况”(触发器)然后“做这件事”(动作)。例如:如果参与者点击特定图像(触发器),则显示另一张不同的随机图像(动作)。

触发器和动作在Labvanced中的使用概览。

有关事件在Labvanced中如何工作的介绍,请参考这个快速视频:

创建事件 - 概述

事件在任务编辑器的右上角“事件”选项卡中管理。可以通过点击 + Frame Event 创建新事件(该事件应该在该帧上发生),或通过点击 + Trial Event 将事件应用于所有帧。所有现有事件都在右侧面板的列表视图中显示。事件在帧级别上定义,可以是每帧单独/特定的,或在试验中每帧重复/相同。

在Labvanced中添加事件

无论哪种方式,事件始终在指定的帧的试验组中的所有试验内定义。然而,自定义逻辑允许用户仅在某些试验、条件或其他情况下执行事件。

下面的视频概述了Labvanced中可用的触发器和动作:

事件的执行顺序可以进行调整。默认情况下,具有相同触发器的事件位于列表的上方,并将首先执行。事件也可以被复制和删除。选择现有事件时,具体细节会在右下角的“事件属性”面板中显示。为了更好的概述,现有事件也可以重新打开(在名称字段旁的图标)。

触发器

触发器定义了事件何时被执行。这可能是对特定对象的鼠标点击、特定键盘输入、变量的变化、视频文件的开始,或其他多种情况。以下列表解释了所有触发器及其设置/参数:

触发器类别 触发器选项 描述
用户输入触发器
  • 鼠标触发器
  • 键盘触发器
  • 按钮点击
  • 输入时回车
  • 滚动触发器
  • 游戏手柄/摇杆触发器
用户输入触发器指的是任何可以通过用户/参与者手动激活的触发器,例如移动鼠标、点击键盘元素、滚动等。
生理信号触发器
  • 眼动追踪注视
  • 眼动追踪定点
  • 头部跟踪
生理信号触发器在有特定生理输入时发生,例如注视特定元素或头部运动变化。
试验和帧触发器
  • 任务初始化
  • 帧初始化
  • 帧开始
  • 帧结束
这些触发器与实验试验和帧相关,例如帧何时开始或结束。
变量值改变触发器变量(值改变)当特定变量值发生变化时,事件触发器会发生。
媒体对象触发器媒体对象触发器该触发器与媒体对象相关,例如在视频/音频文件中暂停、录制完成等。
API触发器
  • Websocket触发器
  • Open AI触发器
这些是当有来自API的输入数据时发生的触发器。
全局触发器
  • 暂停/恢复实验
  • 参与者离开多用户研究
全局触发器是指实验中的任何重大变化,例如暂停实验或多用户研究中参与者离开。

用户输入触发器

用户输入触发器指的是任何可以通过用户/参与者手动激活的触发器。

Labvanced中的用户输入触发器菜单

下面的表格提供了Labvanced中所有用户输入触发器的介绍性概述。每个触发器将在接下来的章节中详细描述。

用户输入触发器选项概述
鼠标触发器 任何鼠标移动都可以用作触发器,例如:滚动、点击、悬停等。你还可以将特定元素或目标与触发器关联。例如,鼠标点击将仅在点击特定图像时使用。
键盘触发器任何键盘按键都可以作为触发器来触发事件。你可以将特定的字母或数字指定为触发器。
按钮点击在Labvanced中创建的按钮对象可用作触发器来触发事件。
输入时回车此触发器通常在参与者在实验中按下'Enter'时使用,作为提交他们在文本字段中的书面响应或输入的手段。
滚动触发器当参与者滚动时发生此触发器。你可以指定x或y轴方向的滚动,以及在何种元素上进行滚动以用作事件触发器。
游戏手柄/摇杆触发器此触发器允许你在实验设计中使用游戏手柄和摇杆控制器,作为记录数据的输入设备。

鼠标触发器

‘鼠标触发器’选项是一个非常流行的事件触发器,因为它基于任何鼠标交互来启动事件,例如:向上/向下移动鼠标、点击、悬停在特定对象上、离开特定对象或任何移动!

Labvanced中的'mouse trigger'选项

下面的示例展示了一个‘鼠标触发器’,当通过'左'鼠标点击'Student'对象'Image_1'执行‘点击’时发生:

Labvanced中使用鼠标触发器选项的示例。

下面是使用鼠标触发器时你所拥有的选项的完整概述:

菜单项菜单区域鼠标触发器选项和规格
动作

下拉列表:
设置触发器行为的可用鼠标动作用下拉列表中提供了以下鼠标触发器选项:
  • 点击: 通过鼠标点击触发
  • 按下: 通过鼠标按下触发
  • 抬起: 通过鼠标抬起触发
  • 悬停: 通过鼠标悬停在对象上触发
  • 离开: 通过鼠标离开某个对象触发
  • 移动: 通过任何鼠标移动触发
按钮

下拉列表:
鼠标按钮设置的解释
  • 左: 通过左鼠标按钮触发
  • 右: 通过右鼠标按钮触发
目标

选项:
鼠标目标区域的特写

在上面的示例中,‘Image_1’是按钮点击将触发事件的目标。

可以通过点击底部的 ‘+添加目标’ 选项来添加多个目标。
指定目标时,有以下选项可供选择:
  • 在帧背景上触发: 鼠标触发器可以在未点击对象或元素的情况下激活。
  • 任何元素: 鼠标触发器在点击帧上的任何元素时可以激活。
  • 添加目标: 选择必须点击的特定元素以激活触发器。
  • 注意: 在事件系统中选择鼠标触发器之后,你可以选择并引用触发器特定的鼠标值用于各种动作,使用value-select menu。

键盘触发器

'键盘触发器'选项是另一种流行的事件触发方式。本质上,任何来自键盘的输入都可以用作触发器。这包括:按下、保持或释放一个键。

Labvanced中的键盘触发器选项

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

使用键盘触发器的示例。

下面是使用键盘触发器时你所拥有的键和选项的完整概述:

菜单项菜单区域键盘触发器选项
动作

下拉列表:
按键动作下拉列表 这些是可用的键盘动作选项:
  • 按键: 通过按下键触发(键是处于按下状态)
  • 按住键: 当键被按下或保持时触发
  • 释放键: 通过释放键触发
注意: 键需要释放才能再次作为触发器“触发”。
键

哪个键触发事件
按键选项的特写触发器使用的是哪个键,通过在此处选择选项并点击**+添加:来指定
  • 箭头: 四个箭头键
  • 数字: 0-9的数字
  • 字母: 英语字母中的所有字母
  • 特殊: 特殊键(Enter、Space、Control、Tab、Shift)
  • F键: F1到F10
  • 任何键: 任何这些键均可接受
你可以通过再次点击
+添加:**按钮添加多个键盘触发器。
其他选项键盘触发器的其他选项启用小键盘按钮选项允许在实验中使用小键盘键作为触发器。

对于允许事件传播选项,如果多个事件具有相同的键盘触发器,则它们将在没有事件传播的情况下全部触发/激活。只有第一个触发,事件执行将停止在执行第一个事件后。
  • 注意: 在事件系统中选择键盘触发器之后,你可以选择并引用触发器特定的键盘值用于各种动作,使用value-select menu。

按钮点击触发器

如果你在编辑器中放置了按钮或导航对象,你可以将其用作事件的一部分,其中点击按钮作为动作的触发器。

Labvanced中的按钮点击菜单

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

按钮点击触发器可用选项

以下是所包含项的更详细视图:

菜单项菜单区域按钮点击触发器选项
目标:

+设置目标
“设置目标”按钮。 选择一个按钮元素作为目标
按钮:
选项
按钮选择选项区域。指定帧上的特定按钮
  • 注意: 在事件系统中选择按钮点击触发器之后,你可以选择并引用触发器特定的按钮点击值用于各种动作,使用value-select menu。

输入时回车触发器

触发条件:在特定元素处按下Enter/Return键。

参数:

  • 添加目标:将输入元素添加到事件中。

  • 注意: 在事件系统中选择输入时回车触发器并后,你可以选择并引用触发器特定的输入时回车值用于各种动作,使用value-select menu。

滚动触发器

触发条件:在特定元素上使用滚动条、触控板上的滚动或鼠标滚轮。

参数:

  • 选择滚动是在Y轴还是X轴上(垂直滚动或水平滚动)。

目标:设置滚动触发器将应用于的目标元素。

注意:对于长文本,在‘对象属性’(/content/learn/zh/guide/task-editor/objects.html#object-properties)面板的‘样式’部分,下的Overflow-X和/或Overflow-Y选项需要选择scroll作为选项。

  • 注意: 在事件系统中选择滚动触发器之后,你可以选择并引用触发器特定的滚动值用于各种动作,使用value-select menu。

游戏手柄/摇杆触发器

游戏手柄/摇杆触发器允许你在实验设计中使用游戏手柄和摇杆控制器,作为记录数据的输入设备。注意: 在‘实验特点’栏目下的研究设置选项卡中记得启用此选项。

游戏手柄触发器菜单选项

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

游戏手柄触发器菜单选项对话框

连接游戏手柄后,你可以指定哪些特定按键将用作触发器。按下特定按键时,系统将显示其ID。

在下面的示例中,2表示 ◎ 键,3表示 ▵ 键。注意: 需要注意的是,不同的游戏手柄在按键ID分配方面存在一些变化。

游戏手柄触发器,设置指令的按键

由于按下某个键,实时数据也将在此触发器对话框的后半部分出现,在此你可以查看根据你所按下或释放的内容,值是如何实时变化的:

游戏手柄触发器实时数据流

查看此指南以获取更多详细信息和使用此触发器的研究示例。

下面的表解释了这些选项的更详细信息。

菜单项菜单区域游戏手柄/摇杆触发器选项
监听按钮设置触发器以监听按钮I.) 指定触发器与按钮相关,并且是按下键、按住或释放键,还是仅释放键。

II.) 指定触发器是针对任意按钮还是特定按钮。如果选择特定选项,你将被提示按下游戏手柄上的按钮。
监听轴设置触发器以监听轴的变化如果需要轴移动,则可以指定触发器将在阈值按特定值变化时发生。默认值为0.01。
连接状态游戏手柄连接状态指示设备是否已连接。
实时数据流实时数据流连接设备并按下某个键或移动某个轴后,实时数据将显示在这里,你在设备上的任何输入将在这里显示。这在设置研究时非常有用,以确定你希望利用哪些按键或轴。

注意: 在事件系统中选择游戏手柄/摇杆触发器后,你可以选择并引用其触发器特定值用于各种动作,使用value-select menu。

生理信号触发器

这些触发器仅在已启用眼动追踪和/或头部追踪时适用。

眼动追踪注视触发器

触发条件:

  • 总体而言,当启用眼动追踪时,此触发器会适用。
  • 仅在注视特定元素时触发

参数:

  • 如果你选择仅在特定元素上触发,请将这些元素添加为目标。

  • 注意: 在事件系统中选择眼动追踪注视触发器后,你可以选择并引用触发器特定的注视值用于各种动作,使用value-select menu。

眼动追踪定点触发器

此触发器仍处于测试阶段。

  • 注意: 在事件系统中选择键盘触发器后,你可以选择并引用触发器特定的定点值用于各种动作,使用value-select menu。

头部跟踪触发器

触发条件:

  • 头部方向或头部运动的变化。

  • 注意: 在事件系统中选择头部跟踪触发器后,你可以选择并引用触发器特定的头部跟踪值用于各种动作,使用value-select menu。

试验和帧触发器

任务初始化触发器

触发条件:

  • 任务的第一次试验的第一个帧。每个任务中将仅执行一次,尽管在所有该帧的实例中都会在事件选项卡中显示。

此触发器与洗牌和从动作中读取配对良好。通过这些组合,可以在任务开始时洗牌数组条目或数据帧,并将受试者分配给刺激组,而无需创建多个事件以读取刺激或数据。

参数:无

  • 注意: 在事件系统中选择任务初始化触发器后,你可以选择并引用触发器特定的任务初始化值用于各种动作,使用value-select menu。

帧初始化触发器

触发条件:

  • 帧初始化,在其对参与者可见之前。

此触发器与洗牌、读取和绘制随机数动作配对良好。通过这些组合,这些动作可以在帧出现之前完成,从而为其他动作启动提供清晰的途径。

注意: 请勿将帧初始化触发器与记录变量的事件或涉及系统变量(例如试验编号或条件编号)的事件一起使用。这是因为帧初始化触发器发生在试验之间,因此对即将显示的试验或条件没有完全准确的计数。

参数:无

  • 注意: 在事件系统中选择帧初始化触发器后,你可以选择并引用触发器特定的帧初始化值用于各种动作,使用value-select menu。

关于任务初始化和帧初始化触发器的说明: 因为任务和帧初始化触发器发生在任务或帧开始之前,在此期间创建的变量将在任务/帧实际开始时重置。当使用此事件时,将出现警告:

帧初始化警告

如果不希望变量值重置,请记得在变量属性窗口中取消选中“在试验开始时重置”框。

帧开始触发器

触发条件:

  • 帧开始

参数:无

  • 注意: 在事件系统中选择帧开始触发器后,你可以选择并引用触发器特定的帧开始值用于各种动作,使用value-select menu。

帧结束触发器

触发条件:

  • 帧结束(帧不再可见后)

参数:无

  • 注意: 在事件系统中选择帧结束触发器后,你可以选择并引用触发器特定的帧结束值用于各种动作,使用value-select menu。

变量值改变触发器

变量值改变

触发条件:

  • 变量的值从其起始值发生变化

参数:

  • 变量:选择一个或多个你想要“监听”的变量。这些变量值的任何变化将立即触发相应的动作。

  • 注意: 在事件系统中选择变量值改变触发器后,你可以选择并引用触发器特定的变量值改变值用于各种动作,使用value-select menu。

媒体对象触发器

媒体对象触发器

以前称为单独的“控制音频/视频触发器”和“控制对象”触发器。

触发条件:

  • 视频或音频文件的开始、暂停或停止
  • 文件上传完成、文件选择、录制对象的录制完成
  • 相机快照对象的快照完成或上传完成

参数:

  • 目标:选择帧上存在的对象元素

  • 执行条件:选择触发的子类型

    • 音频或视频对象选项:
      • 播放开始:当元素开始播放时触发
      • 播放停止:当元素暂停时触发
      • 播放结束:当元素停止播放时触发
    • 视频、音频或屏幕录制对象选项:
      • 录制完成:音频录制停止时触发
      • 上传完成:文件上传完成时触发
    • 文件上传对象选项:
      • 文件选择:选择文件时触发
      • 上传完成:文件上传完成时触发
    • 相机快照对象选项:
      • 快照完成:当相机成功拍摄快照时触发
      • 上传完成:快照完成上传时触发
  • 注意: 在事件系统中选择媒体对象触发器后,你可以选择并引用触发器特定的媒体对象值用于各种动作,使用value-select menu。

API触发器

如果需要将数据从外部服务器发送或传输到Labvanced,则可以使用“API触发器”和“API动作”。可以用作触发器的有:

  • Websocket触发器
  • OpenAI触发器

Labvanced中的API触发器菜单。

Websocket触发器

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

Websocket触发器菜单选项。

点击此选项后,会出现以下项目。

Websocket触发器对话框菜单。

  • 接收/接受自: 自动检测本地主机的IP地址。可以在“研究设置”选项卡中的“实验特点”栏目中手动更改它。
  • 触发/消息: 输入将作为触发器的消息。输入'any'以接受多个消息作为触发器。

有关API触发器/动作如何使用的示例,请查看此演示https://www.labvanced.com/page/library/51053,通过单击对话框中的'检查'选项。

有关API访问的更多信息,请访问此页面。

  • 注意: 在事件系统中选择WebSocket触发器后,你可以选择并引用触发器特定的WebSocket值用于各种动作,使用value-select menu。

OpenAI触发器

‘OpenAI触发器’可以用来根据来自OpenAI的输入信息启动一个动作。

Labvanced中的OpenAI触发器菜单。

选择此选项将导致显示以下参数:

OpenAI触发器菜单选项。

注意: 还请参阅此指南,在其中我们逐步构建一个研究,整合ChatGPT并利用此触发器。

在下面的示例中,分配的数据帧称为'df',来自‘OpenAI触发器’的结果将附加到此数据帧。此数据帧需要有两列。第一列表示“角色”,第二列表示“聊天消息”。这个动作的值将自动附加到这里链接的数据帧中。

Labvanced中的OpenAI触发器示例。

如果你还使用“发送到OpenAI”动作,则需要在此处指示的地方使用相同的数据帧。

  • 注意: 在事件系统中选择OpenAI触发器后,你可以选择并引用触发器特定的OpenAI值用于各种动作,使用value-select menu。

全局触发器

全局触发器在实验中出现任何重大变化时发生,例如暂停实验或参与者离开多用户研究!以下选项被列为全局触发器:

  • 暂停/恢复实验
  • 参与者离开多用户研究

Labvanced中的全局触发器菜单。

暂停/恢复实验

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

将实验暂停作为触发器的选项。

选择此触发器后,将出现以下视图,你可以进一步指定触发器的性质,是否应该在实验暂停后或继续/恢复后执行。

此全局触发器的对话框菜单全局触发器菜单中可用选项

  • 实验暂停: 参与者暂停(退出全屏)研究。

  • 实验继续: 参与者恢复研究。该触发器非常适合眼动追踪研究。它可以用于将参与者发送回之前的试验或帧,如果他们离开了虚拟下巴托架。

  • 注意: 在事件系统中选择暂停/恢复实验触发器后,你可以选择并引用触发器特定值用于各种动作,使用value-select menu。

参与者离开多用户研究

如果参与者离开多用户研究,这也可以用作事件的触发器。如果参与者离开多用户研究,这在全球范围内影响实验,因为这会阻止其他参与者继续研究。

Labvanced中的参与者离开多用户研究选项作为触发器

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

参与者离开多用户研究触发器对话框。

  • 注意: 在事件系统中选择参与者离开多用户研究触发器后,你可以选择并引用触发器特定值用于各种动作,使用value-select menu。

动作

动作定义了当事件被执行时应该发生什么。它们可以用于更改变量和对象属性、记录数据、从数组读取和写入数据,或跳转到下一个试验或任务。通常每个事件都有几个动作。使用“控制动作”,可以使用逻辑操作(如果-否则语句)、循环、回调函数,以及将动作嵌套在彼此之中(例如在如果语句中的while循环)。因此,事件系统可以视为一个图形编程环境。在这个视图中,触发器充当函数调用,而动作则描述功能逻辑。这种方法保证几乎任何实验逻辑都可以在不使用某些编程/语法结构的情况下实现。

下面的表格提供了Labvanced中可用的动作的介绍性概述:

动作类别 动作选项 描述
对象动作
  • 设置对象属性
  • 控制媒体对象
  • 复制对象
  • 对每个对象
对象动作指的是对实验中存在的对象进行的任何操作。
变量动作
  • 设置/记录变量
  • 复制到剪贴板
  • 绘制随机数
  • 获取URL参数
  • 从/写入设备
  • 从/写入共享变量
  • 数学与统计
  • 即时记录变量
  • 移动平均滤波器
  • 分配变量
任何读取或记录变量值的动作。
数组动作
  • 选择数组(读取)
  • 添加/删除数组条目
  • 更改数组条目(替换)
  • 洗牌数组条目
数组操作涉及选择、添加、删除、改变和洗牌数组及其条目。
数据帧操作
  • 从/写入数据帧
  • 洗牌数据帧条目
如果在实验中使用.csv文件(数据帧),这些动作是相关的。
跳转动作
  • 跳转到
  • 接受/结束会话
  • 拒绝/结束会话
  • 重定向到URL
允许你通过跳转到特定部分来导航实验,以及接受和拒绝参与者部分。
控制动作
  • 要求动作(如果…那么)
  • 重复动作(while循环)
  • 延迟动作(时间回调)
  • 动作组
控制动作用于执行特定事件序列,例如如果/那么逻辑、循环(重放重复声或闪烁图像)以及设置动作发生的延迟。
API动作
  • 发送到Websocket
  • 发送到OpenAI
指的是将数据发送到API的API特定动作。
代码动作
  • 运行JavaScript
  • 设置全局CSS
代码动作允许你使用JavaScript或CSS进行工作。
粘贴动作粘贴动作允许你粘贴之前复制的动作。
对象操作指在任务中对存在的对象进行的任何操作。对象操作选项有多种:
  • 设置对象属性
  • 控制媒体对象
  • 复制对象
  • 对每个对象执行操作

Labvanced中的对象操作选项。

设置对象属性操作

通过“设置对象属性”操作,您可以通过指定相关对象、要修改的属性和新值来更改对象的外观。

在下面的示例中,该操作将通过将“可见性”设置为“1”和“高度”设置为“400”来更改目标图像的两个属性,同时通过将此变化发生时的时间存储在名为“Object_Prop_Change_Time”的数值变量中进行记录。

Labvanced中的对象操作示例。

以下是与“设置对象属性”操作相关的字段的完整概述:

菜单项菜单区域设置对象属性触发选项
目标

对象选择下拉列表:
指定对象的对象属性菜单。 第一个下拉列表将显示您在该帧中可以选择的对象。这表示该操作将在哪个特定对象上执行。
目标

属性选择下拉列表:
指定属性的对象属性菜单。第二个下拉菜单指示要更改哪个对象属性。有关可用选项及其参数的完整说明,请参见对象属性表。
值选择菜单指定新值的值选择菜单。定义新值,即作为操作结果的新对象属性的值,使用**值选择菜单**。
‘+ 添加属性’添加更多属性的按钮。通过单击此图标,可以添加和更改多个属性。
复选框 - 记录此改变在屏幕上反映的时间(以帧开始后的毫秒为单位)。记录对象属性变化的时间值的复选框。当属性被改变时,它会花费短时间(约~10ms)才能被看到。通过此选项,您可以更精确地记录改变的属性在下一次显示刷新时何时真正可见。

注意: 选择此选项后,将弹出一个对话框,提示您指明(或创建一个新变量)该捕获的值应存储在哪里。该变量应为数值类型。

控制媒体对象操作

以前是单独的“控制音频/视频”和“控制对象”操作。

效果:更改视频/音频元素的播放或更改上传/录制元素的状态。

参数:

  • 目标:选择一个媒体对象
  • 效果:选择一个子操作
    • 音频或视频对象选项:
      • 开始播放:开始播放视频/音频文件
      • 停止播放:停止播放视频/音频文件
      • 暂停播放:暂停视频/音频文件
      • 跳转到时间:允许您指定时间(以毫秒为单位)以在音频/视频文件中跳转
      • 静音:关闭对象的声音
      • 取消静音:恢复对象的声音
    • 音频、视频或屏幕录制对象选项:
      • 开始录制:开始新的(音频)录制
      • 停止录制:停止(音频)录制
      • 开始上传:开始上传文件
      • 清除录制:删除(音频)录制数据
      • 开始播放:开始播放录制的文件
      • 停止播放:停止播放录制的文件
      • 暂停录制:暂停对象的录制
      • 恢复录制:恢复对象的录制
    • 文件上传对象选项:
      • 开始上传:开始所选文件的上传过程
      • 清除文件:删除所选文件
      • 选择文件:允许参与者选择所需文件
    • 摄像头快照对象选项:
      • 启动摄像头:打开参与者的摄像头
      • 停止摄像头:关闭参与者的摄像头
      • 开始上传:开始将快照上传到实验
      • 拍摄快照:使用参与者的摄像头拍照

复制对象操作

效果:复制一个对象,替代需要多个独立对象和重复事件的需要。

参数:

  • 源:选择要复制的帧上的对象。
  • 复制数量:输入要制作的源对象的复制数量。
  • 设置新元素名称:从多个参数中选择以确定复制品的名称。
  • 以递增后缀分配名称:在新元素名称的末尾添加一个数字标签以区分复制品。
  • 动作序列:允许您选择(从通常的动作列表中)将对所有复制品发生的事情。将“CurrentObject”作为目标以将操作应用于所有复制品。

对每个对象操作

效果:对同一类型的多个对象应用操作。

参数:

  • 过滤器:选择要定位的元素类型。
  • 允许额外的名称过滤器:输入要定位的对象名称。对于帧上的多个对象,当其中一些具有相同名称时,这非常有效。
  • 动作序列:允许您选择(从通常的动作列表中)将对所选元素发生的事情。将“CurrentObject”作为目标以将操作应用于所有满足上述指定条件的元素。

变量操作

变量操作用于设置或创建变量值,记录和定义值,包括跨会话的值。

事件系统中变量操作的位置

下表提供了Labvanced中所有可用变量操作选项的简介。每个选项将在接下来的部分中进行详细描述。

变量操作选项描述
设置/记录变量写入或设置变量值
复制到剪贴板将变量值复制到计算机的内部剪贴板。
生成随机数生成一个或多个随机数并将其保存到变量中。
获取URL参数保存参与者唯一URL中的一个值
从设备读取/写入 从本地设备的存储中读取或写入变量。该操作会将数据保存在参与者的设备上,而不是将数据发送到Labvanced服务器。
从共享变量读取/写入从研究的会话中读取或写入共享变量。该变量可以与所有参与者共享或对每个个体私有。
数学与统计对某些输入变量(数组)执行数学运算并将结果保存在输出变量中。
即时记录变量创建所有变量值的快照并将其发送到Labvanced服务器。
移动平均滤波器计算某些输入的移动平均值(数据的不断更新的平均值),并将结果存储在新变量中。
分发变量将值发送给其他参与者。该值存储在一个变量中。

设置/记录变量操作

“设置/记录变量”操作将在Labvanced的每个实验中使用,因为它是如何存储和记录值与行为测量的方式。

事件系统中设置/记录变量操作的位置

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

事件系统中的设置/记录变量选项

菜单项菜单区域描述
选择选择要分发变量的参与者。单击选择后,您指明哪个变量应存储该值。在这里,您也可以创建一个新变量。
笔图标选择要分发变量的参与者。笔图标象征着值选择菜单,用于定义和指定应分配给所选变量的确切值(如左侧相等(=)符号旁边的绿色按钮所指定)。

在下面的示例中,我们创建了一个名为counter的新变量,并使用值选择菜单中的算术选项将变量值增加1(基于在前一步中定义的触发器)。

在Labvanced中创建计数器变量

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

在Labvanced中为鼠标跟踪和测量坐标创建变量

注意: “设置/记录变量”操作通常还用于控制操作的上下文中,您可以根据变量值使用“如果/那么”和“当循环”指定条件。

复制到剪贴板操作

效果:将变量值复制到计算机的内部剪贴板。

生成随机数操作

效果:生成一个或多个随机数并将其保存到变量中。

参数:

  • 类型:在连续值和离散值之间选择
  • 分布:在高斯分布和均匀分布之间选择
  • 多次抽取(布尔值真/假):选择一次抽取或多次抽取。
  • 抽取数量:选择抽取的次数
  • 最小值:为均匀分布定义最小值
  • 最大值:为均匀分布定义最大值
  • 均值:为高斯分布定义均值
  • 标准差:为高斯分布定义标准差
  • 存储在变量中:选择一个变量以存储值。

获取URL参数操作

效果:从参与者唯一URL中保存一个值。

参数:

  • 参数名称:输入所需参数的名称
  • 存储在变量中:选择要存储参数值的变量

该操作可以与其他操作结合使用,以为参与者构建唯一的URL或提取数据分析所需的信息。

从设备读取/写入操作

效果:从本地设备的存储中读取或写入变量。该操作会将数据保存在参与者的设备上,而不是将数据发送到Labvanced服务器。

参数:

  • 选择从本地设备读取或写入。
  • 选择要读取或写入的变量。

用例:纵向/多会话研究

  • 使用此操作,特定于设备的数据可以从一会话转移到另一会话,前提是同一参与者在每个会话中使用相同的设备。
  • 例如,您可以使用此操作记录每个参与者在会话1中呈现的图像,并确保在会话2中向他们呈现不同的图像。
    • 创建一个图像数组,并随机选择一些在每个会话中呈现。
    • 写入设备:在会话1中呈现的图像的索引编号。
    • 从设备读取:在会话2中,读取会话1中的图像索引,并包括一个JavaScript操作,以防止在第二次会话中选择这些索引。

从共享变量读取/写入操作

效果:读取或写入一个在研究的会话之间共享的变量。该变量可以与所有参与者共享或对每个个体私有。

参数:

  • 选择要同步的变量。必须是标量或数组。
  • 高级选项
    • 存储键:选择一个变量名称,以作为访问同步变量的键。
    • 读取或写入方法:
      • 读取,修改,然后写入共享变量:读取变量,进行更改,然后将变量发送到研究。
      • 仅从服务器读取共享值:调用研究中共享的变量,但不进行任何更改。
      • 仅将变量写入服务器:对共享变量进行更改,但不显示给参与者。
      • 在不同参与者之间共享值(不仅在会话之间):允许参与者跨会话查看彼此的同步变量值。此选项默认为选中状态,但可以通过单击复选框取消选择。
  • 动作序列:
    • 从所有可用操作列表中选择对共享/同步变量发生的事情。

用例:纵向/多会话研究

  • 使用此操作,参与者特定的数据可以从会话转移到另一个会话,并可以在会话之间共享。
  • 例如,您可以使用此操作记录测试中的得分,然后允许参与者将他们的得分与完成测试的其他参与者的平均得分进行比较。
  • 另一个示例(类似于从设备读取/写入操作)是让参与者选择他们喜欢的5个图像,执行一个任务,然后在后续会话中再次呈现这5个图像。区别在于,该操作可以用于向其他参与者展示所选图像,或将这些图像排除在其他参与者可用选项之外。

数学与统计操作

效果:对某些输入变量(数组)执行数学运算并将结果保存在输出变量中。

参数:

  • 类型:在数组运算、线性代数和统计测试之间选择
  • 运算:选择数学运算(例如:sum、min、stdev等)
  • 输入数组:选择执行运算的输入变量(数组)
  • 参数:某些运算有附加参数。
  • 输出:选择将结果存储的输出变量。

即时记录变量操作

效果:创建所有变量值的快照并将其发送到Labvanced服务器。

参数:无

移动平均滤波器操作

效果:计算某些输入的移动平均值(数据的不断更新的平均值),并将结果存储在新变量中。

参数:

  • 滤波器形状:选择滤波器类型
    • 简单移动平均:计算简单移动平均,所有样本具有相同的权重。
    • 线性加权移动平均:加权样本,使得样本的权重线性递减。
    • 指数移动平均:加权样本,使得样本的权重以指数形式递减。
  • 样本数量:确定每步使用的样本数量。
  • 输入:选择进行移动平均计算的输入变量(数组)
  • 输出:选择将结果存储的输出变量。

分发变量操作

分发变量操作对于Labvanced中的多用户研究至关重要。通过此操作,可以在参与者之间共享变量值,基本上允许信息(包括刺激位置和任何更改)在参与者的屏幕上反映。

Labvanced操作菜单中的分发变量操作。

选择此操作后,将出现以下对话框,您可以在此指定在参与者之间分发的变量值。

下图是分发变量操作对话框在所有菜单项填写完后呈现的功能。此示例中,分发变量的操作被用作在两个参与者之间创建聊天的一种方式,通过分发来自输入字段对象的变量值。

所有菜单选项设置为示例的分发变量。

查看此演示,其中结合了分发变量和聊天框功能:描述图像任务与聊天附加功能。

下面提供了对话框菜单项的完整解释:

菜单项菜单区域分发变量操作选项和描述
将值分发给选择要分发变量的参与者。选择将值发送给哪位参与者。
  • **所有参与者:**将该值发送给所有参与者
  • **所选参与者:**将值发送给所选参与者。
选择目标变量和值指定目标变量和数值。
  • **目标变量:**选择一个目标变量以存储该值。
  • **值:**确定应发送给其他参与者的值。
阻止分发变量的阻止选项。如果启用,则不能更改目标变量,直到完成当前值的分发。
速率限制策略分发变量的速率限制策略选项。速率限制策略是一种保护实验以免服务器过载的方式,并作为控制通过分发变量发送到服务器的请求速率的预防措施。提供以下策略选项:
  • **防抖:**当此操作在100毫秒时间窗内执行超过一次时,则新的服务器消息将被“防抖”(只有在间隔100毫秒内未执行此操作后,最近的消息才会发送)。
  • **节流:**当此操作在100毫秒时间窗内执行超过一次时,则新的消息将被节流(即,在自上次消息发送后的100毫秒之后,只有最近的消息将被分发)。
  • **丢弃:**当此操作在100毫秒时间窗内执行超过一次时,则在该100毫秒时间窗内的新消息将被丢弃。
  • **排队:**当此操作在100毫秒时间窗内执行超过一次时,则新的变量值将被排队(最多可排队10条消息)。

数组操作

从数组选择(读取)操作

效果:将从数组中读取一个变量并将该值存储到标量变量中。

参数:

  • 数组变量:输入数组以读取值。
  • 索引类型:确定使用什么类型的索引。
    • 固定:使用固定索引进行读取操作。在这种情况下,请输入应读取信息的位置(基于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 --> 则语句组成。然而,只能执行一个语句。如果某个If / Else-If语句的评估为正(返回真),则在“则”块中的操作将执行,且其余需求操作将被跳过。
  • 添加Else案例(真/假):如果启用,则为需求操作添加默认/回退选项。如果没有执行任何If / Else-If语句(返回真),则执行else案例中定义的操作。

重复操作(While Loop)操作

效果:重复执行一系列操作,可以立即执行或在定义的间隔内执行。可以指定停止条件,以便停止循环执行。

参数:

  • 执行类型:选择立即执行或定时执行
    • 完整循环执行:该操作将持续执行循环,直到满足停止条件。
    • 每...ms执行:在此选择时,将以定义的间隔(例如,每50ms执行循环)执行循环。
  • 定义循环次数:在选择“每...ms执行”时,用户可以选择循环应执行的次数。此项取代了定义停止条件的需要。
  • 执行间隔:决定执行间隔的长度。
  • 立即开始(真/假):如果启用,则立即执行循环。如果禁用,则在下一个执行间隔时开始循环。
  • 允许多个启动(真/假):如果启用,则可以并行启动多个循环实例。如果禁用,则一次只能执行一个循环实例。
  • 启用停止条件(真/假):如果启用,则可以为循环指定停止条件。
  • 停止条件:停止条件可以用于指定逻辑表达式,以便确定何时应停止循环执行。与If / Else-If语句类似,可以组合AND组、OR组和需求进行逻辑比较。
  • 动作序列:动作序列列出每次循环迭代时执行的所有操作。可以通过“添加操作”图标添加新操作。

延迟操作(时间回调)操作

效果:在一定时间延迟后执行一系列操作。

参数:

  • 延迟类型:选择固定延迟或变量延迟
    • 固定延迟:在固定延迟后将执行操作。
    • 变量延迟:在以(数值)变量指定的延迟后执行操作。
  • 延迟:延迟的长度(以毫秒为单位)。
  • 动作序列:动作序列列出在指定时间延迟后执行的所有操作。可以通过“添加操作”图标添加新操作。

操作组

操作也可以组织成**操作组。**操作组允许您将某些操作组合在一起,以便更轻松地进行可视化结构,同时也便于同时复制、重复或删除几项操作。要添加操作组,您可以在自定义操作下找到该选项:

添加操作组

事件窗口中的操作组

API操作

如果您需要将数据从外部服务器发送或传输到Labvanced,则可以使用“API操作”和“API触发器”。该类别下提供以下操作:

  • 发送到Websocket
  • 发送到OpenAI

为使这些操作“可用”或可用,您必须在研究设置的“实验功能”列中输入API密钥。提供API密钥后,这些操作将不再在菜单中被灰显。

Labvanced操作菜单中的API操作。

发送到Websocket操作

Labvanced操作菜单中的发送到Websocket操作。

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

发送到Websocket操作的选项。

上面的示例和完整的事件结构可以通过单击“检查”在此处访问:https://www.labvanced.com/page/library/51053。

菜单项描述
发送到:指定在“研究设置”中列出的Websocket地址,位于“实验功能”列。
触发器/要发送的消息:指定要发送的触发器或消息。
发送变量(可选):指明作为操作一部分也可以发送的变量。

有关API访问的更多信息,请访问此页面。

发送到OpenAI操作

“发送到OpenAI”操作允许您将信息(例如字符串输入值)发送到OpenAI。请注意,为了使此选项可用,您必须在“研究设置”选项卡下的“实验功能”列中列出您的API密钥。

Labvanced操作菜单中的发送到OpenAI操作。

单击此事件时,将出现以下选项:

发送到OpenAI操作的选项。

以下是提供必要信息时该事件的功能示例:

使用发送到OpenAI操作的示例。

如需更深入了解如何利用此功能并查看其应用,请随时通过提交此联系表格与我们联系以获取演示。

注意: 还可参考该操作指引,在其中我们逐步构建一个研究,将ChatGPT集成到研究中并利用此操作。

以下是“发送到OpenAI”操作下包含字段的更详细解释:

菜单项菜单区域“发送到OpenAI”操作选项
模型类型模型类型下拉列表 指定将要使用的AI模型。

**注意:**要指定ChatGPT版本,请参见“研究设置”中的“实验功能”列
聊天历史数据框用于指定数据帧变量的字段链接到带有两列的数据框。第一列将表示“角色”,第二列将表示“聊天消息”。操作中的值将自动附加到此处链接的数据框中。

数据框也可以使用数据框操作进行操作。有关进一步的参考,请查看来自OpenAI的文档。
插入消息‘+’ 插入消息图标。单击此处,变量对话框将出现。您需要指明发送给OpenAI的“变量”值,以及相关消息的“角色”:
  • **系统:**指的是高级ChatGPT系统
  • **用户:**参与者
  • **助手:**指的是在系统中创建的特定子角色

由于OpenAI在不断发展,请查看OpenAI文档以获取进一步的说明。

代码操作

在某些情况下,您的实验可能需要您使用自定义代码。通过这些操作,您可以做到这一点!在“代码操作”菜单下可以找到以下选项:

  • 运行JavaScript
  • 设置全局CSS

Labvanced 动作菜单中的代码操作。

运行JavaScript操作

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

Labvanced 动作菜单中的运行JavaScript操作。

当选择上述“运行JavaScript”操作时,您将看到一个区域(代码编辑器),在这里应编写JavaScript代码,以及如何使用它的说明:

Labvanced 中的 JavaScript 代码编辑器。

设置全局CSS操作

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

Labvanced 动作菜单中的设置全局CSS操作。

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

Labvanced 中的 CSS 代码编辑器。

使用“设置全局CSS”操作的一个例子是在参与者从多项选择问题中选择特定颜色时更改研究的背景色。

粘贴操作

此选项允许您粘贴先前创建和复制的操作。这使您在设计实验时能更快工作,不必一遍又一遍地选择相同的项目。例如,如果您有一个与已存在的事件相似的事件,您可以直接复制它,粘贴并修改,而不是从头开始构建。

值选择菜单

在处理某些事件时,您会注意到出现一个笔图标。它被称为值选择菜单,因为它允许您选择和指示要记录或跟踪哪种值。这是一个非常强大且重要的选项,您必然会在实验设计和设置中使用。

此笔图标/值选择菜单在事件系统中某些操作的各种位置出现,例如设置/记录变量操作、设置对象属性操作和要求(如果...那么)操作,如下所示。

Labvanced 中的值选择位置。

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

Labvanced 中的值选择菜单

上面的图片显示了当使用鼠标触发器时值选择菜单的外观。如您所见,左边的第一个菜单项以触发器特定类别开始,然后转到其他五个类别(当前时间等)。

菜单选项

下表进一步解释了类别和选项:

类别选项描述
触发器特定取决于您之前为事件选择的触发器类型。基于您为事件选择的触发器,值选择菜单顶部将出现特定的选项列表供您选择。请参考触发器特定值部分以查看完整的选项和描述。
当前时间
  • UNIX时间戳
  • 从帧开始的时间
测量和调用时间值。
常量值
  • 字符串
  • 数值
  • 布尔值
  • 类别
  • 日期
  • 时间
  • 颜色
根据您需要的变量类型分配常量值,如字符串或数值。这些有时与其他选项如算术结合使用以创建计数器。
变量
  • 选择变量
  • 从数组中选择值
  • 从数据框中选择值
指定或引用变量或从数组或数据框中选择值。
框架 / 任务 / 对象
  • 对象属性
  • 框架
  • 眼动跟踪
  • 设备
允许您获取与对象属性、框架、眼动跟踪(如果已激活)和设备(屏幕刷新率)相关的值。
操作
  • 算术
  • 字符串操作
  • 数学操作
使用操作对变量执行指定的更改,例如组合变量值、将字符串转换为小写,或进行数学运算。

当前时间值

使用“当前时间”选项,您可以记录或引用与时间相关的值。

以下选项可用:

  • UNIX时间戳
  • 从帧开始的时间

当前时间: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值,以数组格式。

设备

  • 刷新率: 参与者设备的刷新率值。

操作

使用操作对您的变量执行指定的更改,例如组合变量值、将字符串转换为小写,或进行数学运算。

以下选项可用:

  • 算术
  • 字符串操作
  • 数学操作

算术

算术操作对许多不同的目的都有用,包括组合字符串甚至修改对象属性。

Labvanced 中的算术菜单。

本质上,算术操作允许您对多个值进行操作。

选择此选项后,将出现附加的笔图标(即值选择菜单),以及一系列操作,如加法。

Labvanced 中的算术选项的位置。

这些值可以通过使用以下五种不同操作来进行操作:

  • (+) 加法
  • (-) 减法
  • (/) 除法
  • (*) 乘法
  • (%) 取模

以下示例展示了如何利用算术操作创建一个新的字符串变量(在绿色按钮中),名为‘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中所有类型的触发器特定值的表格,后面跟着每个选项的详细解释。

名称值选项 - 概述
触发器(鼠标)
  • 鼠标X
  • 鼠标Y
  • 鼠标[X,Y]数组
  • 刺激名称
  • 刺激信息
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(键盘)
  • 键的ID
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(按钮条)
  • 刺激名称
  • 刺激信息
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(输入时按下回车)
  • 键的ID
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(滚动)
  • 刺激名称
  • 刺激信息
  • 滚动位置X
  • 滚动位置Y
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(手柄/操纵杆)
  • 手柄设备ID
  • 被按下的键(数组)
  • 被按下或保持的键(数组)
  • 释放的键(数组)
  • 轴(数组)
  • 手柄时间戳(Unix时间)
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(眼动追踪凝视)
  • 坐标X
  • 坐标Y
  • 坐标[X,Y]数组
  • 刺激名称
  • 刺激信息
  • 摄像机捕获时间T
  • 凝视置信度C
  • 坐标+时间[X,Y,T]数组
  • 坐标+时间+置信度[X,Y,T,C]数组
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(眼动追踪注视)
  • 注视质心X
  • 注视质心Y
  • 注视持续时间
  • 注视开始时间
  • 注视结束时间
  • 注视分散
  • 刺激名称
  • 刺激信息
  • [X,Y, Dur, Start, End, Disp]
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(头部追踪)
  • 摄像机捕获时间T
  • 头部转动
  • 头部倾斜
  • 头部滚动
  • 头部位置[X,Y,T]数组
  • 鼻子位置[X,Y,T]数组
  • 鼻子向量[X,Y,Z,T]数组
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(任务初始化时)
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(框架初始化时)
  • 试验编号
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(框架开始时)
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(框架结束时)
  • 总框架时间
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(变量值更改)
  • 变量中的新值
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(媒体对象触发)
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(Websocket触发)
  • 消息
  • 数据
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(OpenAI触发)
  • Chat GPT 答复
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(全局实验事件)
  • 总框架时间
  • 全局事件原因
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)
触发器(用户离开实验)
  • 剩余参与者数量
  • 触发时间戳(Unix时间)
  • 触发时间(从帧开始)

触发器(鼠标)值

当使用鼠标触发器时,可以在处理某些操作时调用以下触发器特定值:

可用的鼠标触发值选项。

触发器(鼠标)选项描述
鼠标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时间戳,表示初始快照发生的时间。有关我们基于网络摄像头的眼动追踪技术的更多信息,请参阅我们的ET技术页面.
凝视置信度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时间戳,单位为毫秒。
触发时间(从帧开始)触发发生时从帧开始的时间,以毫秒为单位。

触发器(框架结束时)值

当使用框架结束触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器(框架结束时)选项描述
总框架时间在框架上花费的总时间(以毫秒为单位)。
触发时间戳(Unix时间)触发时间的Unix时间戳,单位为毫秒。
触发时间(从帧开始)从帧开始的触发发生时间(以毫秒为单位)。

触发器(变量值更改)值

当使用变量值更改触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器(变量值更改)选项描述
变量中的新值指的是变量的新值。
触发时间戳(Unix时间)变量更改触发发生的时间戳(以Unix时间格式,单位为毫秒)。
触发时间(从帧开始)从帧开始到变量值更改发生的经过时间(以毫秒为单位)。

触发器(媒体对象触发)值

当使用媒体对象触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器(媒体对象触发)选项描述
触发时间戳(Unix时间)媒体对象触发发生的时间戳(以Unix时间格式,单位为毫秒)。
触发时间(从帧开始)从帧开始到媒体对象触发发生的经过时间(以毫秒为单位)。

触发器(Websocket触发)值

当使用WebSocket触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器(Websocket触发)选项描述
消息一条消息,描述和标记哪个允许您(在接收端)过滤不同类型的数据的字符串。
数据可以包含不同类型数据的值,例如参与者的选择、时间戳、鼠标x/y坐标等。
触发时间戳(Unix时间)WebSocket触发发生的时间戳(以Unix时间格式,单位为毫秒)。
触发时间(从帧开始)从帧开始到WebSocket触发发生的经过时间(以毫秒为单位)。

触发器(OpenAI触发)值

当使用OpenAI触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器(OpenAI触发)选项描述
Chat GPT 答复ChatGPT返回的答案的值。
触发时间戳(Unix时间)OpenAI触发发生的时间戳(以Unix时间格式,单位为毫秒)。
触发时间(从帧开始)从帧开始到OpenAI触发发生的经过时间(以毫秒为单位)。

触发器(全局实验事件)值

当使用暂停/恢复实验触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器(全局实验事件)选项描述
总框架时间指的是触发前的总框架时间。
全局事件原因一个字符串值,说明触发的原因,例如参与者离开研究。
触发时间戳(Unix时间)全局事件触发发生的时间戳(以Unix时间格式,单位为毫秒)。
触发时间(从帧开始)从帧开始到全局事件触发发生的经过时间(以毫秒为单位)。

触发器(用户离开实验)值

当使用参与者离开多用户研究触发器时,可以在处理某些操作时调用以下触发器特定值:

触发器 (用户 离开实验) 选项描述
剩余参与者数量 研究中剩余的参与者数量。
触发时间戳(Unix时间)用户离开实验触发发生的时间戳(以Unix时间格式,单位为毫秒)。
触发时间(从帧开始)从帧开始到用户离开实验触发发生的经过时间(以毫秒为单位)。
Prev
对象
Next
变量