启用Windows Aero时,在Flash中进行抖动播放

时间:2011-02-03 01:50:06

标签: flash actionscript-3 aero frame-rate wmode

自从我从Windows XP切换到Windows 7后,我注意到我一直在努力的Flash网页游戏运行得更加猛烈。尽管我的fps计数器报告游戏的绘图速度为60FPS,但帧速率看起来非常不一致。这根本不顺利。

我终于跟踪了Windows Aero被打开的情况。如果我将桌面设置为Windows经典模式,那么我会看到与之前在XP机器上获得的相似的平滑度。

此外,在启用Aero的情况下,如果我将其全屏显示或者在object / embed标记参数中设置wmode = direct,我可以让游戏顺利运行。不幸的是,这些解决方案都不适合我,所以我有点希望有人遇到这个问题,并且知道另一种解决方法。这里有一些更具说明性的细节:

我的游戏的帧速率设置为60.我更新游戏逻辑并将帧渲染为BitmapData以响应ENTER_FRAME事件。我的游戏逻辑根据自上次调用ENTER_FRAME后经过的时间而更新。另外,由于它使用wmode = direct运行得非常流畅,我知道这不是游戏逻辑或渲染,而是因为急动所致。

我用高速数码相机(210FPS)录制了我的屏幕(60FPS笔记本电脑液晶显示屏)。在我的录音测试中,我有一个计数器,我在每个ENTER_FRAME上递增并绘制。有时计数器确实在录音时增加1。但它也增加2,偶尔增加3!当然,当增量的大小更大时,在增量之间的记录视频上有更多的帧。

就好像调用了ENTER_FRAME,但结果没有被复制到显示器上。我可以看到这种情况发生在一个反常的情况下,它只是在一帧上的屏幕刷新之后调用,然后在下一帧的屏幕刷新之前调用,所以你永远不会看到第一次抽奖。但它怎么能跳过两帧?!此外,这不仅仅是跳过这里或那里。例如,我已经看到它连续八次增加3帧!即视频显示帧3752刚出现,我在视频播放器上打了下一帧11次,然后我看到帧3755出现时没有3753或3754。然后这继续发生在第3758,3761,......和3776帧!

无论如何,我想知道我是否可能正在做些事来激怒闪光之神,并且有没有办法安抚它们以获得非常平滑的帧速率而不使用wmode = direct,全屏或牺牲动物?

0 个答案:

没有答案