Jason,
I would use (and have used) an entirely different approach. Try this:
- Set the Duration of your Mask to the same Duration of your Stimulus,
i.e., 5000 (yes, really)!
- Use the following inline code after Stimulus:
SetNextTargetOnsetTime Stimulus.TargetOnsetTime
That's all. Now, Mask will think that it was supposed to start at the
same time as the Stimulus started, and will use up 5000 ms from the
TargetOnsetTime of the Stimulus. Simple, clean, & effective. (See the
SetNextTargerOnsetTime topic in the E-Basic Help facility for
documentation.)
Note that, in any case, if Mask has it Onset Sync set to "vertical
blank", then you will always get at least one frame of the Mask. If you
want to avoid that, you would have to do some If-Then test and Goto some
Label if the Stimulus has used all its time, presumably because Stimulus
got no response. Here are a couple examples:
If Stimulus.RTTime Then ' got a respsonse
SetNextTargerOnsetTime Stimulus.TargetOnsetTime
Else ' no response
Goto PostMaskLabel
End If
or
If Stimulus.InputMasks.IsPending() Then ' no response
Goto PostMaskLabel
Else ' got a response
SetNextTargerOnsetTime Stimulus.TargetOnsetTime
End If
And of course, the PostMaskLabel appears after the Mask object in the
Procedure.
---------------
David McFarlane
E-Prime training online:
http://psychology.msu.edu/Workshops_Courses/eprime.aspx
Twitter: @EPrimeMaster (
https://twitter.com/EPrimeMaster)