移动MovieClip时的视觉错误

时间:2012-01-30 00:09:21

标签: flash actionscript-3

在我尝试创建一个简单的类似Pong的游戏时,我遇到了一个非常奇怪且有时很严重的视觉错误。
当我设置球(一个Flash CS 5.5库MovieClip)在运动中移动屏幕速度相当快,我注意到有时球的边缘会在它移动的方向上被切断一小段时间。

当它发生时,几乎看起来ball MovieClip的位置略微超出了它自己的边界,因此边界之外的部分无法被绘制。

这是一幅图片,说明了这一点 - 至少对我而言:
enter image description here

您还可以在线查看.swf文件: http://megaswf.com/serve/2099366

一些技术数据:

  1. 无论我多么努力,我都没有成功捕捉到屏幕截图。
  2. 有时候我会打开.swf并且这个bug几乎不存在,而在其他时候它是非常明显的。
  3. 我正在使用EnterFrame事件函数来递增/递减MovieClip的xy位置。
  4. 我从未在任何Flash应用,本机或其他应用中遇到任何此类问题。
  5. 截断/舍入x的{​​{1}}和y值没有帮助。也没有将MovieClip设置为true。
  6. 世界上有什么可能导致这个问题?

    提前致谢。

2 个答案:

答案 0 :(得分:1)

在相同的限制条件下,我遇到了同样的问题。当我为游戏添加内容时,这已成为一个问题。 这些选项大大减少了工件

  • 启用JPEG解块并提高JPEG质量(发布设置)
  • 降低帧速率
  • 启用硬件加速(发布设置)
  • 升级适用于Flash Professional的Flash Debug Player
  • Use the non-integrated flash version in Google Chrome(这为我解决了随机崩溃和全屏口吃)

答案 1 :(得分:0)

我不知道确切的技术原因(我猜它与屏幕刷新率与FPS有关)但我很确定它是一个屏幕工件而不是真正的渲染错误(这是为什么你不能在屏幕截图上得到它)。您可以尝试多种方法来减少效果,例如某种运动模糊:

//on your game loop
mc.filters = [new BlurFilter(Math.abs(speed.x), Math.abs(speed.y),3)];

或者其他视觉调整......但是记住这个事情在黑圈/白背景情况下非常明显,但是在更复杂的情况下,眼睛更宽容。

我不确定是否有技术解决方案(跨机器/操作系统/浏览器可靠),但您也可以尝试使用optimizing your game loop(blitting + stable framerate + updateAfterEvent())等内容。虽然我不确定结果是否会像人们想的那样(我猜它可以帮助一点)。