Hello everybody,
I am trying to setup a task, where participants have to rotate lines drawn in circles for 360°. One mouse click rotates a line for 90°. When finished with one line, they should move on to the next one.
I defined a mouse component in the builder and set the four different circles as clickable stimuli. To rotate the lines, I inserted the following code component, which works fine offline but produces odd outcomes online. Online, when any circle is clicked, every line rotates for 90°.
Begin Experiment (PY):
line1.ori = 270
line2.ori = 270
line3.ori = 270
line4.ori = 270
clickable = [[peg1,line1], [peg2, line2], [peg3, line3], [peg4, line4]]
Begin Experiment (JS):
line1.ori = 270;
line2.ori = 270;
line3.ori = 270;
line4.ori = 270;
clickable = [[peg1, line1], [peg2, line2], [peg3, line3], [peg4, line4]];
Begin Routine (PY):
for i in clickable:
if mouse.isPressedIn(i[0]):
i[1].ori += 90
Begin Routine (JS):
for (var i, _pj_c = 0, _pj_a = clickable, _pj_b = _pj_a.length; (_pj_c < _pj_b); _pj_c += 1) {
i = _pj_a[_pj_c];
if (mouse.getPressed(i[0])) {
i[1].ori += 90;
}
}
I am looking forward to any helpful advice. Thank you very much in advance.
I made the project public (I just started to set up the task, so there is not so much there):
Link: https://gitlab.pavlovia.org/lykanon/peg-v1-boring
I hope that anybody can help me, I am really stuck on this one and cant find a solution.
Hi @Lykanon, the mouse isPressedIn
function does not currently work online, but try the following alternative in JS:
for (let i = 0; i < clickable.length; i++) {
if (clickable[i][0].contains(mouse) && mouse.getPressed()[0] === 1) {
clickable[i][1].ori += 90;
}
}
Thank you for your help @dvbridges. I already used the getPressed method in my code posted above - with no success.
I tried the code and encountered the following error:
ReferenceError: i is not defined

Apologies @Lykanon, I have amended the code
Sorry to disturb you again @dvbridges, but as I tried the amended code, a new error popped up:
TypeError: Cannot read property ‘map’ of undefined
@Lykanon, Would you mind sharing the working URL of the task generating the error?
Thanks, thats it. I think the code needs to go into the “Each Frame” tab. At the moment, it is trying to check whether a mouse click has occurred in an object that has not been drawn yet. I was not able to test this, as the token expired.
Good morning @dvbridges,
when I inserted the code in “each frame” tab it produced a kind of odd outcome online. However, when I tried “end routine” it finally worked as intended. Thank you very much for your time and help!
Best regards