scroll-text.psyexp 31.9 KB
Newer Older
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
1 2 3 4 5 6 7 8 9
<?xml version="1.0" ?>
<PsychoPy2experiment encoding="utf-8" version="2020.2.10">
  <Settings>
    <Param name="Audio latency priority" updates="None" val="use prefs" valType="str"/>
    <Param name="Audio lib" updates="None" val="use prefs" valType="str"/>
    <Param name="Completed URL" updates="None" val="" valType="str"/>
    <Param name="Data file delimiter" updates="None" val="auto" valType="str"/>
    <Param name="Data filename" updates="None" val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code"/>
    <Param name="Enable Escape" updates="None" val="True" valType="bool"/>
10
    <Param name="Experiment info" updates="None" val="{'participant': '', 'session': '001', 'fontSize': '.03'}" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
    <Param name="Force stereo" updates="None" val="True" valType="bool"/>
    <Param name="Full-screen window" updates="None" val="True" valType="bool"/>
    <Param name="HTML path" updates="None" val="" valType="str"/>
    <Param name="Incomplete URL" updates="None" val="" valType="str"/>
    <Param name="Monitor" updates="None" val="testMonitor" valType="str"/>
    <Param name="Resources" updates="None" val="[]" valType="fileList"/>
    <Param name="Save csv file" updates="None" val="False" valType="bool"/>
    <Param name="Save excel file" updates="None" val="False" valType="bool"/>
    <Param name="Save log file" updates="None" val="True" valType="bool"/>
    <Param name="Save psydat file" updates="None" val="True" valType="bool"/>
    <Param name="Save wide csv file" updates="None" val="True" valType="bool"/>
    <Param name="Screen" updates="None" val="1" valType="num"/>
    <Param name="Show info dlg" updates="None" val="True" valType="bool"/>
    <Param name="Show mouse" updates="None" val="False" valType="bool"/>
    <Param name="Units" updates="None" val="height" valType="str"/>
    <Param name="Use version" updates="None" val="" valType="str"/>
27
    <Param name="Window size (pixels)" updates="None" val="[1280, 720]" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
28 29 30 31 32 33 34 35
    <Param name="blendMode" updates="None" val="avg" valType="str"/>
    <Param name="color" updates="None" val="$[0,0,0]" valType="str"/>
    <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
    <Param name="expName" updates="None" val="scroll-text" valType="str"/>
    <Param name="exportHTML" updates="None" val="on Sync" valType="str"/>
    <Param name="logging level" updates="None" val="exp" valType="code"/>
  </Settings>
  <Routines>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
    <Routine name="start">
      <CodeComponent name="code_JS">
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="//code_JS from crib sheet&amp;#10;thisExp=psychoJS.experiment;&amp;#10;win=psychoJS.window;&amp;#10;event=psychoJS.eventManager;&amp;#10;&amp;#10;" valType="extendedCode"/>
        <Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="Code Type" updates="None" val="JS" valType="str"/>
        <Param name="Each Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Routine" updates="constant" val="experimentInit();" valType="extendedCode"/>
        <Param name="End Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="code_JS" valType="code"/>
      </CodeComponent>
      <MouseComponent name="mouse">
        <Param name="clickable" updates="constant" val="" valType="code"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="forceEndRoutineOnPress" updates="constant" val="never" valType="str"/>
        <Param name="name" updates="None" val="mouse" valType="code"/>
        <Param name="newClicksOnly" updates="constant" val="True" valType="bool"/>
        <Param name="saveMouseState" updates="None" val="never" valType="str"/>
        <Param name="saveParamsClickable" updates="constant" val="name," valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val=".5" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="False" valType="bool"/>
        <Param name="timeRelativeTo" updates="constant" val="mouse onset" valType="str"/>
      </MouseComponent>
    </Routine>
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
    <Routine name="end">
      <TextComponent name="text">
        <Param name="color" updates="constant" val="white" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
        <Param name="letterHeight" updates="constant" val="0.1" valType="code"/>
        <Param name="name" updates="None" val="text" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="pos" updates="constant" val="(0, 0)" valType="code"/>
        <Param name="saveStartStop" updates="None" val="False" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="text" updates="constant" val="Fin" valType="extendedStr"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="" valType="code"/>
      </TextComponent>
    </Routine>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
99
    <Routine name="trial">
100
      <CodeComponent name="scrollCode">
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
101 102
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
103 104
        <Param name="Begin Experiment" updates="constant" val="screenRatio = win.size[0]/win.size[1]&amp;#10;&amp;#10;if float(expInfo['fontSize'])&gt;0:&amp;#10;    fontSize = float(expInfo['fontSize'])&amp;#10;else:&amp;#10;    fontSize=.03&amp;#10;mouseY=0&amp;#10;trackLength=.9&amp;#10;trackWidth=.04" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="screenRatio = (win.size[0] / win.size[1]);&amp;#10;if ((Number.parseFloat(expInfo[&quot;fontSize&quot;]) &gt; 0)) {&amp;#10;    fontSize = Number.parseFloat(expInfo[&quot;fontSize&quot;]);&amp;#10;} else {&amp;#10;    fontSize = 0.03;&amp;#10;}&amp;#10;mouseY = 0;&amp;#10;trackLength = 0.9;&amp;#10;trackWidth = 0.04;&amp;#10;" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
105
        <Param name="Begin JS Routine" updates="constant" val="scroll = 0;&amp;#10;lines = scrollText.text.split(&quot;\n&quot;);&amp;#10;maxScroll = 0;&amp;#10;for (var line, _pj_c = 0, _pj_a = lines, _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10;    line = _pj_a[_pj_c];&amp;#10;    maxScroll += Math.ceil(((line.length * fontSize) / screenRatio));&amp;#10;}&amp;#10;viewAll = 0;&amp;#10;dragging = 0;&amp;#10;moving = 0;&amp;#10;" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
106
        <Param name="Begin Routine" updates="constant" val="scroll = 0&amp;#10;lines = scrollText.text.split('\n')&amp;#10;# If you can't see all your text, &amp;#10;# replace the following line with &amp;#10;# maxScroll = x where x is the number&amp;#10;# of missing lines, or negative numbers&amp;#10;# to remove blank lines.&amp;#10;maxScroll = 0&amp;#10;for line in lines:&amp;#10;    maxScroll += math.ceil(len(line)*fontSize/screenRatio)&amp;#10;&amp;#10;viewAll=0&amp;#10;dragging=0&amp;#10;moving=0" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
107
        <Param name="Code Type" updates="None" val="Auto-&gt;JS" valType="str"/>
108 109
        <Param name="Each Frame" updates="constant" val="keys=event.getKeys()&amp;#10;if len(keys):&amp;#10;    if viewAll==1 and 'space' in keys:&amp;#10;        continueRoutine=False&amp;#10;    elif 'down' in keys:&amp;#10;        scroll+=1&amp;#10;        moving=1&amp;#10;    elif 'up' in keys:&amp;#10;        scroll-=1&amp;#10;        moving=1&amp;#10;elif mouse.isPressedIn(scrollBar):&amp;#10;    mouseY=mouse.getPos()[1]&amp;#10;    scroll = (trackLength/2-mouseY)*maxScroll/trackLength&amp;#10;    moving=1&amp;#10;elif mouse.getPressed()[0] == 1:&amp;#10;    if dragging==0:&amp;#10;        dragging=1&amp;#10;        mouseY=mouse.getPos()[1]&amp;#10;    else:&amp;#10;        scroll+=(mouse.getPos()[1]-mouseY)/fontSize/1.08&amp;#10;        mouseY=mouse.getPos()[1]&amp;#10;        moving=1&amp;#10;elif dragging==1:&amp;#10;    dragging=0&amp;#10;if moving==1:&amp;#10;    if scroll &lt;0:&amp;#10;        scroll=0&amp;#10;    elif scroll&gt;=maxScroll:&amp;#10;        scroll=maxScroll&amp;#10;        if viewAll == 0:&amp;#10;            viewAll=1&amp;#10;            continueText.text='Press space to continue'        &amp;#10;    scrollText.setPos((-.45*screenRatio, .45+scroll*fontSize*1.08))&amp;#10;    scrollButton.setPos((screenRatio*.475, trackLength/2-trackLength*scroll/maxScroll))&amp;#10;    bottomCrop.setPos((-.1+.01*(scroll%2), -.475))&amp;#10;    continueText.setOpacity(1-.01*(scroll%2))&amp;#10;    text_2.text = str(scroll)+' of '+str(maxScroll)&amp;#10;    moving=0" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="var _pj;&amp;#10;function _pj_snippets(container) {&amp;#10;    function in_es6(left, right) {&amp;#10;        if (((right instanceof Array) || ((typeof right) === &quot;string&quot;))) {&amp;#10;            return (right.indexOf(left) &gt; (- 1));&amp;#10;        } else {&amp;#10;            if (((right instanceof Map) || (right instanceof Set) || (right instanceof WeakMap) || (right instanceof WeakSet))) {&amp;#10;                return right.has(left);&amp;#10;            } else {&amp;#10;                return (left in right);&amp;#10;            }&amp;#10;        }&amp;#10;    }&amp;#10;    container[&quot;in_es6&quot;] = in_es6;&amp;#10;    return container;&amp;#10;}&amp;#10;_pj = {};&amp;#10;_pj_snippets(_pj);&amp;#10;keys = event.getKeys();&amp;#10;if (keys.length) {&amp;#10;    if (((viewAll === 1) &amp;&amp; _pj.in_es6(&quot;space&quot;, keys))) {&amp;#10;        continueRoutine = false;&amp;#10;    } else {&amp;#10;        if (_pj.in_es6(&quot;down&quot;, keys)) {&amp;#10;            scroll += 1;&amp;#10;            moving = 1;&amp;#10;        } else {&amp;#10;            if (_pj.in_es6(&quot;up&quot;, keys)) {&amp;#10;                scroll -= 1;&amp;#10;                moving = 1;&amp;#10;            }&amp;#10;        }&amp;#10;    }&amp;#10;} else {&amp;#10;    if (mouse.isPressedIn(scrollBar)) {&amp;#10;        mouseY = mouse.getPos()[1];&amp;#10;        scroll = ((((trackLength / 2) - mouseY) * maxScroll) / trackLength);&amp;#10;        moving = 1;&amp;#10;    } else {&amp;#10;        if ((mouse.getPressed()[0] === 1)) {&amp;#10;            if ((dragging === 0)) {&amp;#10;                dragging = 1;&amp;#10;                mouseY = mouse.getPos()[1];&amp;#10;            } else {&amp;#10;                scroll += (((mouse.getPos()[1] - mouseY) / fontSize) / 1.08);&amp;#10;                mouseY = mouse.getPos()[1];&amp;#10;                moving = 1;&amp;#10;            }&amp;#10;        } else {&amp;#10;            if ((dragging === 1)) {&amp;#10;                dragging = 0;&amp;#10;            }&amp;#10;        }&amp;#10;    }&amp;#10;}&amp;#10;if ((moving === 1)) {&amp;#10;    if ((scroll &lt; 0)) {&amp;#10;        scroll = 0;&amp;#10;    } else {&amp;#10;        if ((scroll &gt;= maxScroll)) {&amp;#10;            scroll = maxScroll;&amp;#10;            if ((viewAll === 0)) {&amp;#10;                viewAll = 1;&amp;#10;                continueText.text = &quot;Press space to continue&quot;;&amp;#10;            }&amp;#10;        }&amp;#10;    }&amp;#10;    scrollText.setPos([((- 0.45) * screenRatio), (0.45 + ((scroll * fontSize) * 1.08))]);&amp;#10;    scrollButton.setPos([(screenRatio * 0.475), ((trackLength / 2) - ((trackLength * scroll) / maxScroll))]);&amp;#10;    bottomCrop.setPos([((- 0.1) + (0.01 * (scroll % 2))), (- 0.475)]);&amp;#10;    continueText.setOpacity((1 - (0.01 * (scroll % 2))));&amp;#10;    text_2.text = ((scroll.toString() + &quot; of &quot;) + maxScroll.toString());&amp;#10;    moving = 0;&amp;#10;}&amp;#10;" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
        <Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="scrollCode" valType="code"/>
      </CodeComponent>
      <TextComponent name="scrollText">
        <Param name="color" updates="constant" val="white" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
125
        <Param name="letterHeight" updates="constant" val="$fontSize" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
126 127 128
        <Param name="name" updates="None" val="scrollText" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
129
        <Param name="pos" updates="set every repeat" val="(-.45*screenRatio, .45)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
130 131 132 133 134 135 136
        <Param name="saveStartStop" updates="None" val="False" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
137
        <Param name="text" updates="constant" val="Faculty of Health and Life Sciences&amp;#10;Department of Psychology, Health and Professional Development&amp;#10;Oxford Brookes University, Headington, OXFORD OX3 0BP.&amp;#10;&amp;#10;Researcher: *STUDENT NAME*, Undergraduate, Email: *EMAIL ADDRESS*&amp;#10;&amp;#10;Supervisor: *SUPERVISOR NAME*, Email: *EMAIL ADDRESS*, Tel: 01865 48*INTERNAL NUMBER*&amp;#10;&amp;#10;Please take time to read the following information carefully.&amp;#10;&amp;#10;###What is the purpose of the study?&amp;#10;*The background and the aim of the study should be given here. You should outline the overall design of the study. Again, you can be vague where giving away too much might bias your participants responses. Avoid technical or over-academic language*&amp;#10;&amp;#10;###Why have I been invited to participate?&amp;#10;*You should explain how the individual was chosen to take part in the study and how many other people will be asked to participate. You should explain how the individual was chosen to take part in the study,  and mention relevant inclusion or exclusion criteria. For example... This study is on adults in the UK aged between 18 and 70 who can read English fluently.  A total of between 150 and 200 people will be asked to participate via invitations posted on social media.*&amp;#10;&amp;#10;###Do I have to take part?&amp;#10;No. It is up to you to decide whether or not to take part. If you do decide to take part you are still free to withdraw unprocessed data at any time by closing the browser before pressing the 'submit' button or by contacting the researcher with a unique code that will be displayed on screen after you submit. &amp;#10;&amp;#10;###What will happen to me if I take part?&amp;#10;If you choose to take part in the study, you will be presented with an online questionnaire, which should take no longer than *15-20* minutes to complete. *You should explain your methods of data collection, including what the individual will be asked to do and how much time will be involved. This description should be general enough that the participant will not be surprised by the questions. If information is withheld, ask your supervisor what to put here.*&amp;#10;&amp;#10;###What are the possible benefits or disadvantages of taking part?&amp;#10;There are no direct benefits of taking part in this study. However, we hope that you will find the questions interesting and that outcomes of this study will help to further develop research on this topic area. Other than the time you spend answering the questionnaire, there are no disadvantages of taking part in this study. *Please edit if there are any other disadvantages or risks to the participants, such as induction of a sad mood. Outline any direct benefits for the individual. There are usually none to anyone other than the researcher for their dissertation but if appropriate mention that they might find the study interesting or the activity enjoyable.*&amp;#10;&amp;#10;###Will what I say in this study be kept confidential?&amp;#10;Yes. You will not be asked to give any information that could be used to identify you personally (e.g., your name, date of birth, IP address). Confidentiality, privacy and anonymity will be ensured in the collection, storage and publication of research material (subject to legal limitations). Research data will be stored in Qualtrics and Google Drive, for which the University has security agreements, or uploaded to a repository so that it can be shared for teaching and research purposes. &amp;#10;&amp;#10;###What should I do if I want to take part?&amp;#10;If you would like to take part, please click on the Continue to Experiment button at the bottom of this page before proceeding.&amp;#10;&amp;#10;###What will happen to the results of the research study?&amp;#10;The results of this study will be written up and submitted as a piece of work to fulfil the requirements of a module at Oxford Brookes University. The results may also be published in an academic journal, presented at a conference or used for future research or teaching on the topic.&amp;#10;OR&amp;#10;The results of the research will be used in an undergraduate psychology dissertation. If a publication is planned, the data generated by the study will be retained by the supervisor in accordance with the University's policy on Academic Integrity and may be kept securely  for a period of ten years after the completion of the research project. If no publication is proposed the data will be deleted in *INSERT MONTH and YEAR*.&amp;#10;&amp;#10;###Who has reviewed the study?&amp;#10;This research is being conducted by a Psychology student at Oxford Brookes University as part of the requirement for their course. The study procedures have been reviewed and approved by the Psychology Research Ethics Committee, Oxford Brookes University. If you have any concerns about how the study has been conducted, please contact the Psychology Research Ethics Officer, Dr Emma Davies, on edavies@brookes.ac.uk&amp;#10; &amp;#10;###Contact for Further Information&amp;#10;Please contact the researcher or their supervisor (contact details above) if you would like any further information about this study. &amp;#10; &amp;#10;If you wish to obtain a summary of the findings when they have been written up please e-mail *STUDENT NAME* at *EMAIL ADDRESS*@brookes.ac.uk  after *RESULTS DAY*.&amp;#10;&amp;#10;Thank you for taking time to read the information sheet.&amp;#10;&amp;#10;**Date**&amp;#10;*TODAY'S DATE*&amp;#10;&amp;#10;&amp;#10;&amp;#10;" valType="extendedStr"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
138 139 140 141 142 143
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="screenRatio-.2" valType="code"/>
      </TextComponent>
      <CodeComponent name="align_code">
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
144
        <Param name="Begin Experiment" updates="constant" val="import math" valType="extendedCode"/>
145
        <Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
146 147
        <Param name="Begin JS Routine" updates="constant" val="maxScroll += round(.6/fontSize);&amp;#10;maxScroll -= 73;&amp;#10;scrollText.setAlignHoriz('left');&amp;#10;scrollText.setAlignVert('top');" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="maxScroll += round(.5/fontSize)&amp;#10;maxScroll -= -73&amp;#10;scrollText.anchorHoriz='left'&amp;#10;scrollText.anchorVert='top'&amp;#10;scrollText.alignText='left'" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
148 149 150 151 152 153 154 155 156 157
        <Param name="Code Type" updates="None" val="Both" valType="str"/>
        <Param name="Each Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="align_code" valType="code"/>
      </CodeComponent>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
158 159 160 161 162 163 164 165 166 167 168 169 170
      <PolygonComponent name="scrollBar">
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="fillColor" updates="constant" val="$[0,0,0]" valType="str"/>
        <Param name="fillColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="lineColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="lineColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="lineWidth" updates="constant" val="2" valType="code"/>
        <Param name="nVertices" updates="constant" val="4" valType="int"/>
        <Param name="name" updates="None" val="scrollBar" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
171
        <Param name="pos" updates="constant" val="(screenRatio*.475, 0)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
172 173
        <Param name="saveStartStop" updates="None" val="False" valType="bool"/>
        <Param name="shape" updates="constant" val="rectangle" valType="str"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
174
        <Param name="size" updates="constant" val="(trackWidth, trackLength+trackWidth)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
      </PolygonComponent>
      <PolygonComponent name="scrollButton">
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="fillColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="fillColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="lineColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="lineColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="lineWidth" updates="constant" val="2" valType="code"/>
        <Param name="nVertices" updates="constant" val="4" valType="int"/>
        <Param name="name" updates="None" val="scrollButton" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
196
        <Param name="pos" updates="constant" val="(screenRatio*.475, trackLength/2)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
197 198
        <Param name="saveStartStop" updates="None" val="False" valType="bool"/>
        <Param name="shape" updates="constant" val="rectangle" valType="str"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
199
        <Param name="size" updates="constant" val="(trackWidth, trackWidth)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
      </PolygonComponent>
      <PolygonComponent name="bottomCrop">
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="fillColor" updates="constant" val="$[0,0,0]" valType="str"/>
        <Param name="fillColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="lineColor" updates="constant" val="$[0,0,0]" valType="str"/>
        <Param name="lineColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="lineWidth" updates="constant" val="1" valType="code"/>
        <Param name="nVertices" updates="constant" val="4" valType="int"/>
        <Param name="name" updates="None" val="bottomCrop" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
221
        <Param name="pos" updates="constant" val="(-.1, -.475)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
222 223
        <Param name="saveStartStop" updates="None" val="False" valType="bool"/>
        <Param name="shape" updates="constant" val="rectangle" valType="str"/>
224
        <Param name="size" updates="constant" val="(screenRatio, .1)" valType="code"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
225 226 227 228 229 230 231 232
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
      </PolygonComponent>
233 234 235 236 237 238 239 240 241 242 243 244
      <TextComponent name="continueText">
        <Param name="color" updates="constant" val="white" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
        <Param name="letterHeight" updates="constant" val="fontSize*1.5" valType="code"/>
        <Param name="name" updates="None" val="continueText" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
245
        <Param name="pos" updates="constant" val="(0, -.45)" valType="code"/>
246 247 248 249 250 251 252
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
253
        <Param name="text" updates="constant" val=" " valType="extendedStr"/>
254 255 256
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="" valType="code"/>
      </TextComponent>
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280
      <TextComponent name="text_2">
        <Param name="color" updates="constant" val="red" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
        <Param name="letterHeight" updates="constant" val="0.1" valType="code"/>
        <Param name="name" updates="None" val="text_2" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="pos" updates="constant" val="(.4, .4)" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="text" updates="constant" val=" " valType="extendedStr"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="" valType="code"/>
      </TextComponent>
281
    </Routine>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
282 283
  </Routines>
  <Flow>
284
    <Routine name="start"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
285
    <Routine name="trial"/>
286
    <Routine name="end"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
287 288
  </Flow>
</PsychoPy2experiment>