关于E-prime中的鼠标点击,已经分享过《E-prime中的鼠标点击》和《E-prime编写鼠标点击型记忆再认实验》两篇,本篇再换一个角度分享一下。
来自于微信上@ELFI同学的提问,希望在E-prime中通过鼠标点击实现下图中的效果,即进度条式样的点击打分:
这个和之前写过的鼠标点击有类似之处,但是解决办法不太一样,主要通过获取鼠标位置,填充SlideText控件实现。
下面来具体分享一下细节和设置。
首先,在实验的主时间轴上放置好指导语,显示鼠标的语句和实验的List,并且在List中设置好呈现刺激材料的sti列和ans_val空白列,用于存储被试实际点选进度条取值。如下图所示:
在创建的test时间轴上依次放置好Label控件,两个Slide控件和Inline:
在第一个Slide中,通过几个SlideText控件的组合设置好呈现给被试点选的界面样式,并且输入文本内容和设置调用。在本例中以从unhappy到happy的选择为例:
而在第二个的Slide中,在与第一个Slide相同的位置设置好各个控件,并且额外加上一个填充了颜色的SlideText作为色块,它的宽度可以随便设置,高度与打分条框的高度一致即可:
接下来就是Inline的设置了。这里的操作是通过获取被试在第一个Slide中的鼠标点击坐标,设置第二个slide里的SlideText色块,使其宽度填充到鼠标点击的相应位置。在Inline中具体写上如下语句:
这里换用了一个之前没有提到过的获取鼠标点击位置的方式CMouseResponseData(),使使用这个函数取到第一次鼠标点击的坐标,分别存储横纵坐标值到xPos和yPos变量中。下一步是一个判断,判断鼠标点击的位置是否是是在打分条的范围内,如果在的话,那么用获取到的横坐标值减去打分条初始位置的横坐标值,作为填充色块的宽度赋值给它即可,同时计算点击位置占整个进度条的比例值,存入数据结果中。而如果鼠标点击的位置不在范围内,则返回到开始重新点击,直到点击到位为止。
这样设置之后,就能够实现最开始鼠标点击打分条呈现的效果了。本篇推送中省略了一些非核心步骤,大家可以在示例文件中具体查看。
当然,使用这样的方式存在几个问题:第一,如果要记录反应时的话,假如存在点击位置不在打分条框的范围内,重新再点击的过程相当于反应时重新记录了,只有每次从第一个Slide开始呈现到点击鼠标直接的时间记录。如果要解决的话需要增加变量累加每次的反应时;第二,在截图中这版屏幕分辨率使用的是1024*768,大家可以看到一些关键的位置都是用数值形式填写的,这就意味着,如果屏幕分辨率一旦变化,相应的数值也需要做调整,否则位置会有偏移。具体的计算依据的是打分条的宽高比例等。在示例文件中也打包了一版1920*1080分辨率的版本,供大家参考。
最后再提一句,这一个小功能用E-prime实现起来居然要这么多步骤,再次推荐大家使用PsychoPy,毕竟这样的页面只需要直接接入Builder模式下,Slider的rating样式就直接能够实现了。
本例中具体的程序示例在“阅读原文”中的可以下载,密码见评论区置顶。如有问题也欢迎留言提问讨论。
最近微信上有很多朋友都给Ryan留下了有意思的问题,欢迎大家继续提问,比较有教学意义的都会整理出来发送到公众号上的。此处也要感谢各位提问的同学~
欢迎有疑问的朋友继续在公众号后台或者微信上给Ryan留言提问~
祝好!
—Ryan的后记
来都来了,确定不点个“在看”再走嘛~↓↓↓↓
网友评论