Подведите итог проблемы: (Новое для js - я попытался найти ответ здесь, но я не уверен, не понимаю ли я поведение клавиш или мой код не работает.) Я пытаюсь переместить объекты на экран. Вместо того, чтобы реагировать на нажатие клавиш или нажатие клавиш (я пробовал оба), объект перемещался только после того, как я нажал другую клавишу. Это было бы хорошо для перемещения объекта, но я также пытаюсь заблокировать ответ после нажатия пробела, который также не работает.
Это используется Chrome Версия 81.0.4044.92 на Macbook Pro
Опишите, что вы пробовали: я пытался использовать как keyup, так и keydown.
Когда это уместно, покажите код:
var angle;
var myx;
var myy;
var LocCol;
var LocCol2;
var _resp_test_allKeys;
var TestComponents;
// FRR ----- manual entry BEGIN; copy this before "function TestRoutineBegin(trials) {"
// code to move stimulus
var xforce;
xforce = 0; // initially set speed ('force') to 0. It increases in steps of 1 as long as key is down
function resetXforce(event){
xforce = 0 // if finger has been lifted, go back to speed 0
}
function getKeyResponse(event){ // check for responses
var thisResp = psychoJS.eventManager.getKeys();
console.log(thisResp)
if ("left" == thisResp[0]) {
xforce--; // decrease angle with increasing acceleration the longer key pressed
angle = (angle + xforce); //plus not minus here since xforce may become negative
myx = (0.25 * Math.sin((((Math.PI * 2) * angle) / 360)));
myy = (0.25 * Math.cos((((Math.PI * 2) * angle) / 360)));
//smallcircle2.setPos([myx, myy]);
image_on_circ_test.setPos([myx, myy]);
}
if ("right" == thisResp[0]) {
xforce++; //increase angle with increasing acceleration the longer key pressed
angle = (angle + xforce);
myx = (0.25 * Math.sin((((Math.PI * 2) * angle) / 360)));
myy = (0.25 * Math.cos((((Math.PI * 2) * angle) / 360)));
//smallcircle2.setPos([myx, myy]);
image_on_circ_test.setPos([myx, myy]);
}
// for some reason this only responds on second keypress?
/* if ("space" == thisResp[0]) {
LocCol2 = 'white' // if response locked with spacebar
} */
if (psychoJS.eventManager.getKeys({keyList:['space']}).length > 0) {
LocCol2 = 'white' // if response locked with spacebar
}
//psychoJS.eventManager.clearEvents({eventType:'keyboard'});
}
document.addEventListener("keydown", getKeyResponse); //tried keydown as well, with the same problem
document.addEventListener("keyup", resetXforce);
// FRR ----- manual entry END -----