这些代码片段是为 Coder 设计的,您可以在其中控制正在发生的一切以及何时发生的事情。同样的事情可以在 Builder 中完成,但是您必须修改代码以适应 Builder 的事件循环周期。ie Builder 在实验开始、每次试验、每次屏幕刷新等时都会做某些事情。所以你不能不加修改就插入这种代码,因为例如,它会尝试无限期地等待按键。与此同时,Builder 会在每次屏幕刷新时检查键盘(通常为 60 Hz),因此如果您尝试无限期地等待代码中的按键,您将停止 Builder 执行它需要执行的所有其他操作。
从本质上讲,您只需将代码分解为片段,这些片段将放入 Builder 代码组件中的相应选项卡中(用于在实验开始、每一帧等执行的代码),并避免像事件这样的不确定函数。 waitKeys() 支持通过 event.getKeys() 进行即时检查
例如,改编 Jonas Lindeløv 的第二个示例,在“开始例行程序”选项卡中,输入:
chars = list('0123456789.') # the valid characters
meanText = '' # start with an empty answer on each trial
在“每一帧”选项卡中,输入如下内容:
response = event.getKeys() # get a list of keys pressed at this instant
if len(response) > 0: # if there was one,
key = response[0] # just convenient shorthand
if key in chars:
meanText = meanText + response[0]
elif key == 'space':
meanText = meanText + ' '
elif key == 'backspace' and len(meanText) > 0:
meanText = meanText[:-1]
elif key == 'return':
thisExp.addData('Answer', meanText) # save the response
continueRoutine = False # finish this trial
# update the appropriate text stimulus with the current response value:
insertNameOfYourTextStimulusComponent.text = meanText