Hi,

I have a code that determines if a mouse click was on a picture and on which picture it was (there are 8 pictures).

This code works great when I do not make any change to the canvasaspectratio, however, when changing the canvasaspectratio to (4,3) it does not work (there is a shift between the mouse click and the picture position). Below please find an example of one picture.

<defaults>

/ canvasaspectratio = (4,3) //if you comment this it works

/ canvassize = (100%, 100%)

</defaults>

<values>

/canvaswidth = display.canvaswidth //This does not received the change in canvasaspectratio and returns the display ratio

/canvasheight = display.canvasheight

/responseY = 9

/responseX = (canvasheight/canvaswidth) * (values.responseY) //correcting this manualy to the changed ratio does not solve the problem.

</values>

<picture response1d>

/ items = ("response1disksR.png")

/ position = ( 50+values.responseX,50-values.responseY )

/ size = (15.8%,15.8%)

</picture>

<expressions 1_redL_4>

/ x11d = picture.response1d.left

/ y11d = picture.response1d.top

/ x12d = picture.response1d.right

/ y12d = picture.response1d.top

/ x13d = picture.response1d.left

/ y13d = picture.response1d.bottom

/ a1d = ((expressions.y12d - expressions.y13d)*(mouse.x - expressions.x13d) + (expressions.x13d - expressions.x12d)*(mouse.y - expressions.y13d)) / ((expressions.y12d - expressions.y13d)*(expressions.x11d - expressions.x13d)+(expressions.x13d - expressions.x12d)*(expressions.y11d - expressions.y13d))

/ b1d = ((expressions.y13d - expressions.y11d)*(mouse.x - expressions.x13d) + (expressions.x11d - expressions.x13d)*(mouse.y - expressions.y13d)) / ((expressions.y12d - expressions.y13d)*(expressions.x11d - expressions.x13d)+(expressions.x13d - expressions.x12d)*(expressions.y11d - expressions.y13d))

/ c1d = 1 - expressions.a1d - expressions.b1d

</expressions>

<expressions validresponse_disks>

/ validresponse_disks =

if (0<=expressions.a1d && expressions.a1d <= 1 && 0 <= expressions.b1d && expressions.b1d <= 1 && 0 <= expressions.c1d && expressions.c1d <= 1){

values.response = -1; true; values.p_confidence = 1;

}

</expressions>

<trial responsetrial>

/ stimulusframes = [ 1 = clearscreen;

2 = response1d, response2d,response3d, response4d, response5d, response6d, response7d, response8d,

qToAsk, circleInstruction, triangleInstruction, guess, sure, primaryOrSecondaryShapeMid, circleMid

]

/ ontrialbegin = [

values.response = "";

]

/ validresponse = (response_blank, response1d, response2d, response3d, response4d, response5d, response6d, response7d, response8d)

/ inputdevice = mouse

/ isvalidresponse = [

if (trial.responsetrial.response == "response_blank") false;

else expressions.validresponse_disks;

]

/ ontrialend = [

values.response_time = trial.responsetrial.latency;

]

</trial>