我想创建一个 Flash 程序来跟踪鼠标和键盘的生物特征,例如鼠标移动速度、点击率、击键长度等。我如何确保如果用户在具有不同处理器速度的多台机器上重复他/她的操作,我将记录相同的数据?
问问题
137 次
2 回答
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);
}
}
}
于 2011-06-17T03:04:54.263 回答
0
将 SWF 的 frameRate 设置为 60 fps(AFAIK,更大的数字不会提高速度)并保持图形效果和代码计算简单。这样,您将获得高帧率。您需要它,因为您的代码仅在播放器渲染的帧之间唤醒,而大 fps 将增加时间分辨率。
然后使用 getTimer 给出的实时测量您的数据。如果您的应用程序能够以 60 fps 的速度运行,则一帧将持续 1000/60 = 16.666 毫秒,因此您可以希望您的数据如此精确。
(@Marty Wallace:getTimer() 返回 int,而不是 Number)
于 2011-06-17T06:03:40.513 回答