我想测量游戏中事件的时间。目前我只是在事件开始和结束时保存时间戳,并计算差异。
当用户在活动期间切换浏览器中的选项卡时,就会出现问题。这会导致闪存暂停,这会打乱我的间隔计算,因为它取决于“实时”时间,而不是闪存“活动”的时间。
有什么简单的解决方案吗?就像一些内部计时器随着游戏的其余部分暂停,我可以启动和检查而不是减去时间戳。
我想测量游戏中事件的时间。目前我只是在事件开始和结束时保存时间戳,并计算差异。
当用户在活动期间切换浏览器中的选项卡时,就会出现问题。这会导致闪存暂停,这会打乱我的间隔计算,因为它取决于“实时”时间,而不是闪存“活动”的时间。
有什么简单的解决方案吗?就像一些内部计时器随着游戏的其余部分暂停,我可以启动和检查而不是减去时间戳。
如果您可以检测到用户何时在 javascript 中切换选项卡(可能是模糊事件),您可以使用 localconnection 告诉 flash 保存另一个时间戳,然后当页面重新获得焦点时,向 flash 发送另一个时间戳。现在您必须在添加差异和忽略差异之间来回切换,而不是仅减去两个时间戳。
首先,启动一个常规的 Timer()。然后为激活和停用添加侦听器......当您的应用失去焦点(用户转到另一个选项卡、另一个应用等)时,这些事件会触发:
addEventListener(Event.ACTIVATE, activateListener);
addEventListener(Event.DEACTIVATE, deactivateListener);
然后在侦听器方法中停止并启动计时器。