multiple mouse reactions in one trial
David McFarlane
mcfarla9 at msu.edu
Thu May 26 16:06:40 UTC 2011
Alexander,
Stock reminder: 1) I do not work for PST. 2)
PST's trained staff takes any and all questions
at
http://support.pstnet.com/e%2Dprime/support/login.asp
, and they strive to respond to all requests in
24-48 hours -- this is pretty much their
substitute for proper documentation, so make full
use of it. 3) If you do get an answer from PST
Web Support, please extend the courtesy of
posting their reply back here for the sake of others.
(And to Mich, hat's off for saying what I so often say.)
That said, here is my take...
As liw hinted, you could collect multiple mouse
clicks for a single stimulus & input mask by
making use of the InputMask.Responses property in
inline code -- see that topic in the E-Basic Help
facility, and the MultipleResponseCollection.es
example in the PST Web Downloads area. But to
get the stimulus to change upon each response
would take more work. I think liw's approach
using multiple objects may be easier to for a
begginner, but if you don't mind diving in to a
bunch of code then an alternative (and not
necessarily better) approach would be to use the
InputMask.Responses property along with the .Draw
method of each of the various sub-objects on your
stimulus Slide. The VAS example from PST shows
how to do something like this (note that their
VAS example is *not* a VAS, it is a Likert
scale!). (And if you do resort to the PST
examples, take them as only a starting point for
coding ideas -- they have the virtue of providing
actual working code, but beyond that the code is
not a good model of good programming practices.)
-- David McFarlane, Professional Faultfinder
"For a successful technology, reality must take
precedence over public relations, for nature
cannot be fooled." (Richard Feynman, Nobel prize-winning physicist)
At 5/26/2011 06:21 AM Thursday, liwenna wrote:
>hmmmz despite Michiels more educationally responsible answer I tried
>to conjure something up for you.
>
>I believe it's possible to record multiple responses during one show
>of a slide... but you can't alter the slide while it's being shown.
>You do want to change it (i.e. you want the clicked number to
>disappear) so therefore you'll have to change the slide after each
>response is given and then show it again.
>
>One could use different slidestates to show 'the same slide' with
>different appearances (i.e. a different number of text boxes) but..
>you'd need 24 slidestates (4*3*2*1) while if I remember correctly,
>only 12 are allowed, so that's not really an option.
>
>What is?
>
>Use a slide with four textboxes... each textbox will contain one
>number, store the numbers in four attributes in a list (n1, n2, n3 or
>whatever you like) and tell the four textboxes to find their 'text'
>from these attributes by entering [n1], [n2], etc in the text fields.
>By default the textboxes will be named text1, text2, text3 etc, which
>is fine, you could change their names, doesn't really matter. Enable
>the mouse on the slide and set the end action to terminate, log the
>response time.
>
>On your trial procedure, directly after the slide place an inline
>containing this code:
>
>*******
>If responsecount = 0 then c.setattrib "slidestarttime",
>SLIDENAME.OnsetTime
>
>'tell the program which slide we are talking about
> Set theState = SLIDENAME.States("Default")
>
>'Was there a response?
> If SLIDENAME.InputMasks.Responses.Count > 0 Then
>
>'Get the mouse response
> Set theMouseResponseData =
>CMouseResponseData(SLIDENAME.InputMasks.Responses(1))
>
>'Determine string name of SlideImage or SlideText object at
>'mouse click coordinates. Assign that value to strHit
> strHit =
>theState.HitTest(theMouseResponseData.CursorX,
>theMouseResponseData.CursorY)
>
>'if strHit remains empty, i.e. the mouseclick was not made on one of
>the textboxes, then go back and show the slide again
> if strHit = "" then goto backlabel
>
>'keep a count of the number of responses given so far
> Responsecount = responsecount +1
>
>'log the name of the textbox that was clicked under response1,
>response2, response3 etc, dependent on the value of responsecount
>'log the responsetime for this response under response1.rt,
>response2.rt, etc, also dependent on the value of responsecount.
>Calculate the responsetime by subtracting the
>'onsettime of the first showing of the slide (stored under
>slidestarttime) from the timestamp of the new response
>(SLIDENAME.RTTime).
> c.SetAttrib "response"& responsecount, strHit
> c.SetAttrib “response”& responsecount &“.rt”, SLIDENAME.RTTime
>- c.getattrib ("slidestarttime")
>
>'change the text of the textbox was clicked to nothing: ""
>
>CSlideText(SLIDENAME.States(Slide1.ActiveState).Objects(strHit)).text=“”
>
>'if less than 4 response have been given, go back to show the slide
>again
> if responsecount <4 then goto backlabel
>
> End If
>
>'reset the response counter for the next trial
>Responsecount = 0
>************
>
>replace every instance of SLIDENAME with the actual name of your
>slide. The variable responsecount should be created by writing the
>line "dim responsecount as integer" (no "'s) on the user tab of the
>script window. Place a label on the procedure right before your slide,
>call it backlabel. This is a kind of 'marker', at the end of the code
>the program will return to that 'place in the procedure' when it
>encounter the line containing 'goto backlabel'.
>
>So basically what it does is the following: it determines the name of
>the textsubobject that was clicked on and stored this name under
>'strHit'. If there is no value stored in strHit then the click was
>made outside of the textbox areas and the program goes back to show
>the slide again in it's current state. If that is not the case then
>strHit is stored as the given response and so is the response time.
>After that it replaces the text of the subjectobject with the name
>that is stored under strHit (i.e. the box that was clicked on) with ""
>which is... nothing. This way the clicked number will (hopefully :p)
>disappear. It then goes back to backlabel and shows the slide again,
>rinse and repeat until 4 responses have been given.
>
>I haven't tested this code, it might be full of minor and/or major
>errors.. but something like this should, generally speaking, work...
>you could just give it a try ;)
>
>especially this line might be problematic: c.SetAttrib “response”&
>responsecount &“.rt”, SLIDENAME.RTTime - c.getattrib
>("slidestarttime") . If so then break it down into one line for the
>calulations (create variable called erm... responsetime, then use a
>line: responsetime = SLIDENAME.RTTime - c.getattrib ("slidestarttime")
>followed by a separate line to log this value: c.SetAttrib "reponse"&
>responsecount &".rt", responsetime .
>
>Please le me know whether that works :)
>
>Best,
>
>liw
>
>
>
>
>On May 26, 11:02 am, Michiel Spape <Michiel.Sp... at nottingham.ac.uk>
>wrote:
> > Hiya,
> > The easy way would be to pay someone to code it for you!
> >
> > But, for anyone to help:
> > - What is "little experience"? Have you read
> the entire getting started guide and/or additional material (linked before)?
> > - Where do you get stuck?
> > Best,
> > Mich
> >
> > Michiel Spapé
> > Research Fellow
> > Perception & Action group
> > University of Nottingham
> > School of Psychologywww.cognitology.eu
> >
> > -----Original Message-----
> > From: e-prime at googlegroups.com
> [mailto:e-prime at googlegroups.com] On Behalf Of Alexander
> > Sent: 26 May 2011 07:36
> > To: E-Prime
> > Subject: multiple mouse reactions in one trial
> >
> > Hi all,
> >
> > I have little experience with eprime.
> > I want to do an experiment in which four digits are presented
> > simultaneous on the screen. These should be selected in ascending
> > order with the mouse. For every mouse click the reaction time and the
> > clicked off digit should be recorded. The digit already been selected
> > should be hidden. The next trial with new digits should start only
> > when all four digits have been clicked.
> > For notes on how I can solve this in an easily way, I would be more
> > than grateful.
> >
> > Best regards
> > Alexander
--
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.
More information about the Eprime
mailing list