最近要使用OpenSesame做自定步速阅读,也许是因为非常小众,所以网上的例子少之又少,正好利用端午假期好好研究一番,造福社会。
我将从以下几个方面介绍:
参考了官网的地址:我们给出的标准答案是:OpenSesame是一个为心理学、神经科学和实验经济学创建实验的程序。
那么作为实验的程序,它包含了如下一些特点:
工程区就是我们将侧边栏中的功能拖拽进来的地方,它将会是我们程序执行结构的一个主要区域;
程序执行时,其中每一个语句具体的执行内容,可以通过修改其内容完成
在我们启动工程时,它会默认给我们一个实验工程,这个运行这个工程,其实我们就对这个功能有一个大概的认识:
【工程区&展示区】这是一个最初级的实验概况:点击"experiment",它就是你的实验区域,这里面包含两个部分:“getting_started”和"welcome"两个部分;(其实你的实验可以任意定义任何实验组件,来组成一个完整的实验)
通过在展示区里面可以切换逻辑和代码,让你更全面的了解你的程序是如何运行的;
【展示区表格】展示区表格中包含两列:Item name和Run if,它们的含义分别代表了左侧想要运行的具体实验和条件表达式,同样,你也可以新建实验,比如:
所以,在回过头来,我们看到其实我们的实验是由两个组件组成的:notepad和sketchpad;
notepad
notepad其实很简单,我们可以简单的理解为它是实验的描述,只不过是文件的形式体现出来,在项目中你可以将你的项目内容,演示效果,使用文档、代码逻辑等等,都可以放在这里,它相当于一个readme.txt。
sketchpad
这是一个展示器,你想要给用户看到的主要界面就是这个,直接双击即可改这个文案,接下来,我们把它改成 “hello Laohu ,Welcome to OpenSesame”?
怎么样,是不是很简单?当然,除此之外,侧边栏还有很多功能,比如插入文字、图片、线、图形、阴影等等都可以,可以根据你的需求来;
你可以通过展示区右上角的一个toggle标签,来进行切换,目前是view controls,你可以切换到view script,然后我们来继续看一下,脚本里面的到底都写了什么?看见了么,最后一行 draw textline中text="hello Laohu ,Welcome to OpenSesame"就是描述这个notepad的展示文案;
set start_response_interval no
set reset_variables no
set duration keypress
set description "Displays stimuli"
draw textline center=1 color=white font_bold=no font_family=serif font_italic=no font_size=32 html=yes show_if=always text="hello Laohu ,Welcome to OpenSesame" x=0 y=0 z_index=0
当然,你可能会说,直接改动可视化文件我还OK,敲代码我有点难受,而且语法我都看不懂。没关系,后面我会一点一点补充,这里是给大家有一个简单的概念;
运行
啰嗦了这么多,找到【顶部功能区】的绿色运行按钮,点击运行按钮,即可;
这个Demo稍微有些复杂,我们先来看一下整体结构:
看起来很复杂,其实一点也不难,我们就像扒圆葱一样从外层到内层一点点剖析:
首先,它是一个实验,包含图文介绍(about_this_templete和instructions)和 两个子实验(practice_loop和experienment_loop),每个实验里面分别做了不同的事情(block_sequence);
practice_loop和experienment_loop:A loop containing one or more practice blocks;
block_sequence:A sequence containing a single block of trials followed by feedback to the participant;
这是一个统计按键反应时长的测试功能,实验开始后,用户点击任意按钮,终止实验,实验结束后,展示用户点击的时间;如此循环往复;
我们看一下block_loop的源代码:
set source_file ""
set source table
set skip 0
set repeat 1
set order random
set offset no
set item trial_sequence
set description "A single block of trials"
set cycles 1
set continuous no
set column_order ""
set break_if_on_first yes
set break_if never
setcycle 0 empty_column ""
run trial_sequence
代码执行前都是配置阶段,最后一行执行trial_sequence就是一个真正的语句:run trial_sequence
接下来执行:trial_sequence
set flush_keyboard yes
set description "A single trial"
run sketchpad always
run keyboard_response always
run logger always
接下来执行:sketchpad
set start_response_interval no
set duration 0
set description "Displays stimuli"
draw fixdot color=white show_if=always style=default x=0 y=0 z_index=0
接下来执行:keyboard_response
set timeout infinite
set flush yes
set event_type keypress
set duration keypress
set description "Collects keyboard responses"
接下来执行:logger
set description "Logs experimental data"
set auto_log yes
最后执行:
set reset_variables yes
set duration keypress
set description "Provides feedback to the participant"
draw textline center=1 color=white font_bold=no font_family=mono font_italic=no font_size=18 html=yes show_if=always text="Your average response time was [avg_rt]ms
Your accuracy was [acc]%
Press any key to continue" x=0 y=0 z_index=0
这里面有个执行参数: [avg_rt] ,可以通过变量检查器查看;它关联的是keyboard_respoinse;