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>