osh*_*hko 9 apache-flex flash actionscript-3 vsync
我在2D射击游戏上工作,屏幕上有许多移动物体(子弹等).
我使用BitmapData.copyPixels(...)将整个屏幕渲染到缓冲区:BitmapData.然后我从"缓冲区""copyPixels"到屏幕:BitmapData.帧率为60.
private var bitmap:Bitmap = new Bitmap();
private var buffer:Bitmap = new Bitmap();
private function start():void {
addChild(bitmap);
}
private function onEnterFrame():void {
// render into "buffer"
// copy "buffer" -> "bitmap"
}
Run Code Online (Sandbox Code Playgroud)
问题是精灵正在撕裂:精灵的某些部分水平移动.
它看起来像是关闭了VSYNC的PC游戏.
有人解决了这个问题吗?
更新:问题不是关于性能,而是关于摆脱屏幕撕裂.
[!]更新:我已经创建了另一个问题,在这里您可以尝试两种实现:使用Flash方式或BitmapData + copyPixels()
我感觉到你的痛苦,因为我现在正在开发自己的游戏.在默认设置下,无论您生成什么代码,Flash渲染器都会产生可怕的屏幕撕裂/ v-sync问题.
这就是为什么我很高兴能找到最简单,最优雅的答案,那就是没有重新分解代码(这对单个位有帮助,问题是Flash播放器,而不是代码).
只需在"发布设置"中启用"硬件加速"即可.有两种不同的选择:
1级:直接 ; 和第2级:GPU.
在官方文档中阅读更多相关信息:指定SWF文件的发布设置,并确定哪种选项最适合您的游戏.
目标市场确实在这里起作用,如果它对游戏玩家来说是一个严肃的游戏,你不需要担心可能的性能问题,因为大多数游戏玩家都有GPU.
这篇文章没有具体提供我的解决方案,但引导我朝着正确的方向前进.但是,如果您的游戏将在浏览器窗口中,您可能必须使用相同的技术将wmode设置为direct或gpu.
归档时间: |
|
查看次数: |
7192 次 |
最近记录: |