Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用MovieStim2跳过基于PsychoPy中按键的视频(在循环中)_Python_Loops_Video_Break_Psychopy - Fatal编程技术网

Python 使用MovieStim2跳过基于PsychoPy中按键的视频(在循环中)

Python 使用MovieStim2跳过基于PsychoPy中按键的视频(在循环中),python,loops,video,break,psychopy,Python,Loops,Video,Break,Psychopy,我用《心理变态》中的MovieStim2播放了3个视频。不过,我怀疑这个问题源于没有真正理解循环 当参与者按键时,我想跳到下一个视频。我理解当参与者按下“q”时我的代码是如何退出的,但我不知道如何让它在他们按下“b”时跳到下一个视频,例如。这是我目前的代码: vidNum = 1 for f in ['clip1.mpg', 'clip2.mpg', 'clip3.mpg']: clock.reset() #logfile.write("AfterForLoopTime,%s,V

我用《心理变态》中的MovieStim2播放了3个视频。不过,我怀疑这个问题源于没有真正理解循环

当参与者按键时,我想跳到下一个视频。我理解当参与者按下“q”时我的代码是如何退出的,但我不知道如何让它在他们按下“b”时跳到下一个视频,例如。这是我目前的代码:

vidNum = 1
for f in ['clip1.mpg', 'clip2.mpg', 'clip3.mpg']:
    clock.reset()
    #logfile.write("AfterForLoopTime,%s,Video %s\n" % (core.getTime(), vidNum))
# Create your movie stim.
    mov = visual.MovieStim2(win, videopath+f,
                       size=640,
                       # pos specifies the /center/ of the movie stim location
                       pos=[0, 0],
                       flipVert=False,
                       flipHoriz=False,
                       ) # loop=False - need to comment this to use a loop

# Start the movie stim by preparing it to play
    shouldflip = mov.play()
    logfile.write("AfterShouldflipLine58,%s, Video %s\n" % (clock.getTime(), vidNum))
    while mov.status != visual.FINISHED:
    # Only flip when a new frame should be displayed. Can significantly reduce
    # CPU usage. This only makes sense if the movie is the only /dynamic/ stim
    # displayed.
        if shouldflip:
        # Movie has already been drawn , so just draw text stim and flip
        #text.draw()
            win.flip()
        else:
        # Give the OS a break if a flip is not needed
            time.sleep(0.001)
    # Drawn movie stim again. Updating of movie stim frames as necessary
    # is handled internally.
        shouldflip = mov.draw()

    # Check for action keys.....
        for key in event.getKeys():
            if key in ['escape', 'q']:
                win.close()
                core.quit()
我尝试添加类似于在q之后退出的最后一个块的代码:

            elif key in ['b']:
                break
但我意识到我真的想打破这个循环:

for f in ['clip1.mpg', 'clip2.mpg', 'clip3.mpg']:
然而,这似乎也不起作用

for f in ['clip1.mpg', 'clip2.mpg', 'clip3.mpg']:
    for key in event.getKeys():
        if key in ['b']:
           break

实际上,您想要打破的循环是:

while mov.status != visual.FINISHED:
我能想到的最简单的方法是,如果用户按键,只需将您的电影状态设置为
-1
(或
visual.FINISHED

例如:

if key in ['b']:
    mov.status = -1
这将打破你目前的视频从我可以告诉你