我在屏幕上的不同位置呈现了大量不同的图像刺激。
当参与者点击刺激时,我需要该刺激项的名称可用于脚本的其余部分。
例如,您可以使用SlideState.HitTest(x, y)
方法在E-Prime中实现此目的,其中x和y是鼠标坐标。
我在Psychopy中唯一能够看到的类似事物是mouse.isPressedIn(shape)
方法。但是因为你必须提供一个特定的对象作为一个参数,看起来你需要一个if
子句用于每个刺激,这似乎很麻烦(特别是对于大量的项目)
有更好的方法吗?我还在学习,所以我可能会遗漏一些东西。
谢谢!
答案 0 :(得分:2)
不,我想不是。但是,如果您只是将所有对象添加到列表中并循环遍历它们,则代码将足够整洁。
# List of (pointers to) stimulus objects
shapes = [shape1, shape2, shape3, shape4, shape5]
# Loop over them and check if mouse is pressed on each one of them
for shape in shapes:
if mouse.isPressedIn(shape):
# Set this variable to point to the latest pressed shape
pressed_shape = shape
# Now you can do stuff with this object
pressed_shape.fillColor = 'red'
pressed_shape.draw()
print pressed_shape.name
请注意,如果鼠标点击有两个对象的位置,pressed_shape
是此解决方案列表中的最新内容。