我想创建一个跟踪鼠标和键盘生物识别的闪存程序,例如鼠标移动速度,点击率,按键长度等等。如果用户在具有不同处理器速度的多台计算机上复制他/她的操作,我将如何确保记录相同的数据?
答案 0 :(得分:2)
您可以使用getTimer()
给出的数字对所有数据进行签名 - 这意味着您的数据时间戳为自应用程序启动以来的毫秒数 - 无论处理器速度如何等等。
示例:
public class DocClass extends Sprite
{
// vars
private var _log:Array = [];
/**
* Constructor
*/
public function DocClass()
{
stage.addEventListener(MouseEvent.CLICK, _click);
}
/**
* MouseEvent.CLICK
*/
private function _click(e:MouseEvent):void
{
>> _log[_log.length] = {time:getTimer(), data:"CLICK"};
}
/**
* Output the log
*/
public function outputLog():void
{
var i:Object;
for each(i in _log)
{
trace(i.time + ": " + i.data);
}
}
}
答案 1 :(得分:0)
将SWF的frameRate设置为60 fps(AFAIK,更大的数字不会加速)并保持图形效果和代码计算简单。这样你就可以获得高帧率。你需要它,因为你的代码只在玩家渲染的帧之间唤醒,而大fps会增加时间分辨率
然后使用getTimer给出的实时测量数据。如果您的应用程序能够以60 fps运行,则一帧将持续1000/60 = 16.666毫秒,因此您可以希望您的数据准确无误。
(@ Marty Wallace:getTimer()返回int,而不是Number)