2011-08-12 16 views
0

我一直在一个Flash游戏上工作一个月,应该可以在浏览器中进行操作(光照计算)。这就是说,我注意到在一些浏览器中,游戏以15fps的速度运行(游戏应该以80fps运行)。这已经知道在IE9的情况发生,并快速修复是这一行添加到HTML的顶部:Actionscript3/flash cs4:如何解决从浏览器启动时的延迟

<meta http-equiv="X-UA-Compatible" value="IE=9"> 

这是一个速战速决,迫使IE浏览器到兼容模式,大大提高了FPS(大约... 60,比方说)。

尽管如此,我相信游戏的运行速度应该比每个浏览器都慢,这在html版本与swf比较时很明显。

游戏中的移动(“html”)也“相当明显”:这些游戏会伤害游戏的美感,从而影响游戏的可玩性!

所有这些让我相信浏览器限制了对电脑显卡的访问;

1)这是在HTML慢,而且在SWF

2)快于正常速度声音播放,但图形滞后

编辑

3)所有显卡在游戏中相当低的分辨率(即,显示为宽度1xheight1的图形是宽度为1xheight1png的动画片段)+尽可能小

4)我制作了非常(计算上)简单的flash项目并看到相同的图形运动问题。

任何人都可以给我一些建议,关于如何在浏览器中增加游戏的平滑度?

+1

我相信超高帧速率(超过50 fps)实际上会在某些浏览器中减慢播放器速度。尝试降低它低于50. 此外,由于需要解压缩,压缩的图形可能导致口吃。如果你还没有,你也可能想看看对象池,因为如果你从内存中释放了很多对象,垃圾收集器可能会导致这些口吃者轮回。 –

+0

关于“......高帧速率(50 fps以上)......”我刚才已经试图将游戏速度降低到<50 fps,并且只是将游戏中的所有增量转换为与80fps中的移动相匹配版。没有明显的区别:(关于图形的第二部分:我想说 - 使用压缩图形将是一个坏主意!!!!我的意思是说:在我的图形对象中使用的PNG是相同的分辨率因为它们会出现在游戏中 现在进入垃圾收集器(GC):我对这个问题持怀疑态度。对于swf和html版本,GC的工作是不是应该相同? –

+0

http:// www。 kaourantin.net/2006/05/frame-rates-in-flash-player.html –

回答

1

这可能是SWF嵌入HTML页面的一个症状。 Flash支持许多“窗口模式”,它们决定了如何将内容呈现到浏览器窗口中。当SWF嵌入HTML页面时,通过参数wmode设置该参数。

根据Adobe's documentation,这应设置为“直接”以获得最佳性能:

直接 - 使用直接到路径渲染。这会绕过屏幕缓冲区中的合成 ,并直接将SWF内容呈现在屏幕上。 建议使用此wmode值为 内容播放提供最佳性能,并且可以对使用舞台视频或舞台3D的SWF 内容进行硬件加速演示。

在实践中,wmode可以错误的操作,因此它可能有助于尝试在documentation提到的替代技术。

这可能有助于提高性能的其他选项有:

  • 使用stage.scaleMode = StageScaleMode.NO_SCALE。如果嵌入的大小与原始大小不匹配,这将防止缩放内容。缩放有助于CPU使用率,因此禁用它应该会提高帧速率(请参阅StageScaleMode#NO_SCALE)。
  • 在非透明影片剪辑(例如根影片剪辑)上设置opaqueBackground。透明度需要额外的计算来将前景色与背景色相乘。设置不透明背景会绕过这些额外的计算,并可能导致性能提升。 (请参阅DisplayObject#opaqueBackground