Я хотел бы измерить reaction time of a user. В этом примере я использую actioncript, но концепция действительно важна, поэтому не стесняйтесь отвечать на выбранном вами языке, если вы хотите показать какой-либо код.Миллисекундная точность ActionScript new Date() или getTimer()
Пользователь сидит перед экраном и будет представлен красной точкой. Когда они видят красную точку, они попадают в пробел.
Моя логика такова: сделать красную точку видимой, создать новую дату, подождать пробел, создать новую дату, найти разницу в миллисекундах, используя объект TimeSpan.
//listen for the keystroke
this.systemManager.stage.addEventListener(KeyboardEvent.KEY_DOWN, catchSpace, true, 1);
...
if (e.keyCode == Keyboard.SPACE) {
e.preventDefault();
this.dispatchEvent(new PvtEvent(PvtEvent.BTN_CLICK));
}
//show the red dot, making note of the time
redDot.visible = true;
this.startCount=new Date();
//user clicks the space bar
this.endCount=new Date();
var timeSpan:Number=TimeSpan.fromDates(this.startCount, this.endCount).totalMilliseconds;
Я чувствую, что это должно работать, но я получаю некоторые значения, которые сбивают с толку. Вот типичный результирующий набор:
[254, 294, 296, 305, 306, 307, 308, 309, 310, 308, 312, 308, 338, 346, 364, 370, 380, 387, 395, 402, 427]
Обратите внимание, что некоторые из значений близки, и 308 записывается несколько раз. Итак, мои вопросы таковы:
- Является ли мой код или логика, которую я использую, в некотором роде?
- Какова вероятность того, что пользователь сможет продлить время повтора?
- Если вероятность низкая, то что мне здесь не хватает?
Следует также отметить, что я получил (совершенно случайно) 12 мс время отклика. Я тестировал приложение и случайно попал в пробел, когда появилась красная точка. Итак, я сомневаюсь, что мой код не может судить точное время, по крайней мере, с точностью ± 12 мс :).