Я бы хотел измерить время реакции пользователя .В этом примере я использую Actionscript, но концепция действительно важна, поэтому не стесняйтесь отвечать на выбранном вами языке, если вы хотите показать какой-либо код.
Пользователь сидит передэкран и будет представлен с красной точкой.Когда они видят красную точку, они ударяются о пробел.
Моя логика такова: сделать видимой красную точку, создать новую дату, дождаться пробела, создать новую дату, найти разницу в миллисекундах, используя 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 мс :).