Millisecond Forums

mouse movement question

https://www.millisecond.com/forums/Topic32432.aspx

By peter - 11/2/2021

/ ontrialbegin = [picture.bord.hposition = 1px * mouse.x; picture.bord.vposition = 1px * mouse.y]

When the trial loops internally across multiple iterations the line of code above fixes the displayed image (picture.board) to the movement of the mouse. Meaning, for example, that as the mouse is moved towards the bottom right, the picture.bord moves with it towards the bottom right. I would like to reverse these relationships so that as you move the mouse towards the bottom right the image (picture.bord) moves towards the top left.
I would be very grateful for any assistance in cracking this.
Many thanks
Peter
By Dave - 11/2/2021

peter - 11/2/2021
/ ontrialbegin = [picture.bord.hposition = 1px * mouse.x; picture.bord.vposition = 1px * mouse.y]

When the trial loops internally across multiple iterations the line of code above fixes the displayed image (picture.board) to the movement of the mouse. Meaning, for example, that as the mouse is moved towards the bottom right, the picture.bord moves with it towards the bottom right. I would like to reverse these relationships so that as you move the mouse towards the bottom right the image (picture.bord) moves towards the top left.
I would be very grateful for any assistance in cracking this.
Many thanks
Peter

Here's an ancient example ( https://www.millisecond.com/forums/FindPost4421.aspx ), code slightly cleaned up and adapted to Inquisit 6 syntax.

<defaults>
/ inputdevice = mouse
/ screencolor = (white)
/ fontstyle = ("Verdana", 3.00%, true)
/ txcolor = (black)
/ txbgcolor = (white)
</defaults>

<values>
/ x = 0px
/ y = 0px
/ mirrorx = true // mirror horizontally
/ mirrory = true // mirror vertically
</values>

<expressions>
/ x = 1px*abs(values.x-(values.mirrorx*display.canvaswidth))
/ y = 1px*abs(values.y-(values.mirrory*display.canvasheight))
</expressions>

<expt>
/ blocks = [1=example]
</expt>

<block example>
/ trials = [1=start]
</block>

<trial start>
/ stimulusframes = [1=clickhere]
/ validresponse = (lbuttondown)
/ ontrialend = [values.x=trial.start.responsex; values.y=trial.start.responsey]
/ branch = [trial.move]
/ recorddata = false
</trial>

<trial move>
/ ontrialend = [values.x=trial.move.responsex;
    values.y=trial.move.responsey;
]
/ stimulusframes = [1=clearscreen, dot, coordinates]
/ validresponse = (mousemove, lbuttondown, rbuttondown)
/ numframes = 1
/ branch = [if (trial.move.response=="lbuttondown") {
        return trial.end;
    } else if (trial.move.response == "rbuttondown") {
        return trial.pause;
    } else if (trial.move.response == "mousemove") {
        trial.move;
    };
]
/ recorddata = false
</trial>

<trial pause>
/ stimulusframes = [1=coordinates]
/ validresponse = (mousemove, lbuttondown)
/ numframes = 1
/ ontrialend = [values.x=trial.pause.responsex; values.y=trial.pause.responsey]
/ branch = [if (trial.pause.response=="lbuttondown") {
        return trial.move;
    } else {
        return trial.pause;
    };
]
/ recorddata = false
</trial>

<trial end>
/ stimulusframes = [1=clearscreen, goodbye]
/ validresponse = (lbuttondown)
/ recorddata = true
</trial>

<shape dot>
/ shape = circle
/ width = 4%
/ color = (blue)
/ erase = false
/ hposition = expressions.x
/ vposition = expressions.y
</shape>

<text coordinates>
/ items = ("x=<%values.x%> | y=<%values.y%>")
/ position = (50%, 5%)
/ size = (27.5%, 4%)
/ vjustify = center
/ erase = false
</text>

<text clickhere>
/ items = ("Click to start.")
</text>

<text goodbye>
/ items = ("Goodbye!")
</text>
By peter - 11/2/2021

Dave - 11/2/2021
peter - 11/2/2021
/ ontrialbegin = [picture.bord.hposition = 1px * mouse.x; picture.bord.vposition = 1px * mouse.y]

When the trial loops internally across multiple iterations the line of code above fixes the displayed image (picture.board) to the movement of the mouse. Meaning, for example, that as the mouse is moved towards the bottom right, the picture.bord moves with it towards the bottom right. I would like to reverse these relationships so that as you move the mouse towards the bottom right the image (picture.bord) moves towards the top left.
I would be very grateful for any assistance in cracking this.
Many thanks
Peter

Here's an ancient example ( https://www.millisecond.com/forums/FindPost4421.aspx ), code slightly cleaned up and adapted to Inquisit 6 syntax.

<defaults>
/ inputdevice = mouse
/ screencolor = (white)
/ fontstyle = ("Verdana", 3.00%, true)
/ txcolor = (black)
/ txbgcolor = (white)
</defaults>

<values>
/ x = 0px
/ y = 0px
/ mirrorx = true // mirror horizontally
/ mirrory = true // mirror vertically
</values>

<expressions>
/ x = 1px*abs(values.x-(values.mirrorx*display.canvaswidth))
/ y = 1px*abs(values.y-(values.mirrory*display.canvasheight))
</expressions>

<expt>
/ blocks = [1=example]
</expt>

<block example>
/ trials = [1=start]
</block>

<trial start>
/ stimulusframes = [1=clickhere]
/ validresponse = (lbuttondown)
/ ontrialend = [values.x=trial.start.responsex; values.y=trial.start.responsey]
/ branch = [trial.move]
/ recorddata = false
</trial>

<trial move>
/ ontrialend = [values.x=trial.move.responsex;
    values.y=trial.move.responsey;
]
/ stimulusframes = [1=clearscreen, dot, coordinates]
/ validresponse = (mousemove, lbuttondown, rbuttondown)
/ numframes = 1
/ branch = [if (trial.move.response=="lbuttondown") {
        return trial.end;
    } else if (trial.move.response == "rbuttondown") {
        return trial.pause;
    } else if (trial.move.response == "mousemove") {
        trial.move;
    };
]
/ recorddata = false
</trial>

<trial pause>
/ stimulusframes = [1=coordinates]
/ validresponse = (mousemove, lbuttondown)
/ numframes = 1
/ ontrialend = [values.x=trial.pause.responsex; values.y=trial.pause.responsey]
/ branch = [if (trial.pause.response=="lbuttondown") {
        return trial.move;
    } else {
        return trial.pause;
    };
]
/ recorddata = false
</trial>

<trial end>
/ stimulusframes = [1=clearscreen, goodbye]
/ validresponse = (lbuttondown)
/ recorddata = true
</trial>

<shape dot>
/ shape = circle
/ width = 4%
/ color = (blue)
/ erase = false
/ hposition = expressions.x
/ vposition = expressions.y
</shape>

<text coordinates>
/ items = ("x=<%values.x%> | y=<%values.y%>")
/ position = (50%, 5%)
/ size = (27.5%, 4%)
/ vjustify = center
/ erase = false
</text>

<text clickhere>
/ items = ("Click to start.")
</text>

<text goodbye>
/ items = ("Goodbye!")
</text>
Thank you for that, i will take a look and try to pick out what i need.
regards
Peter