Я аспирант в области экспериментальной психологии, и из-за COVID-19 мы вынуждены перевести все наши эксперименты в онлайн. Я также не очень хорошо знаю Javascript.
Проблема в том, что мы обычно предъявляем стимулы в течение короткого промежутка времени (например, 200 мс), и нам нужна наименьшая изменчивость, поэтому мы обычно синхронизируемся с частотой обновления монитора.
Мое ограниченное понимание Javascript заключается в том, что setTimeout()
не привязан к кадрам монитора (поэтому стимул, который должен отображаться в течение 200 мс, может фактически находиться на экране дольше, чем это время), и что requestAnimationFrame()
будет более точным. Тем не менее, я провел последние несколько дней, пытаясь понять, как использовать requestAnimationFrame()
вместо setTimeout()
, но безрезультатно, все учебники, которые я нашел, были для отображения анимированных стимулов. Вот фрагмент кода, который я сейчас использую для обработки потока моего эксперимента.
setTimeout(function() {
generateTrial(current_trial);
$fixation.show();
setTimeout(function() {
$fixation.toggle();
$presentation.toggle();
setTimeout(function() {
$presentation.toggle();
$fixation.toggle();
setTimeout(function() {
ShowContinuousReport(current_trial);
}, 995);
}, 195);
}, 995);
}, 495);
У вас есть идея, как преобразовать все эти противные setTimeout()
в requestAnimationFrame()
(или хотя бы во что-то лучше, чем setTimeout()
)? :)
Я использую холсты HTML5 ($presentation
и $fixation
), которые рисуются во время generateTrial(current_trial)
.
Спасибо за помощь!
С уважением, Мартин Констант.