1

我想创建一个 Flash 程序来跟踪鼠标和键盘的生物特征,例如鼠标移动速度、点击率、击键长度等。我如何确保如果用户在具有不同处理器速度的多台机器上重复他/她的操作,我将记录相同的数据?

4

2 回答 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 回答