首先我要说的是,这里的上下文是 Actionscript 3.0(IDE:Flashbuilder)以及椋鸟框架 http://gamua.com/starling/.
因此,我想创建一个可用于平台游戏或类似游戏的图块地图。
我想在 800x600 像素的舞台上使用 8x8 像素的图块,但我遇到的问题是我不知道如何将这些 7500 多个图块对象添加到舞台而不显着降低帧速率。
我发现性能下降来自于将每个图块添加到舞台,而不是初始化每个图块对象。
我知道我没有提供太多具体信息,但我要求的是是否有一种标准化方法可以将数千个静态对象绘制到舞台上而不损失性能。我觉得有办法,只是我还没有找到。
Update:
经过你们的热心帮助,我找到了一个很好的解决方案。一开始我想实现Amy的解决方案,使用copyPixels()和draw()为整个地图制作一个大的位图数据,然后将其渲染到屏幕上。不过,然后我想知道是否有一个与此相当的 Starling,因为如果我不必将 Starling 与 Native Flash 混合在一起,一切都会简单得多。
再次感谢 Amy,我进一步研究了 Starling 的 RenderTexture 类,发现使用它的“drawBundled()”和“draw()”方法,我可以轻松地将所有图块绘制到 RenderTexture 中,然后将 RenderTexture 放入到图像(Starling 的图像类)中,然后将该图像添加到屏幕上。
该解决方案比我之前尝试过的愚蠢的缓慢解决方案(使用扁平化精灵等)快一百万倍。它的初始化时间更快,并且当渲染纹理的图像显示在屏幕上时,帧速率似乎没有下降。
我想测试的一件事是在游戏过程中更新图块的图形是否很容易。比如说,如果水从源头(或其他东西)扩散,并且“草”图块必须变成“水”图块,那么 RenderTexture 及其图像是否能够改变其外观,而不会出现某种滞后尖峰或性能问题。我很快就会测试一下。
感谢大家的帮助!
不要向舞台添加那么多对象。相反,创建一个与舞台大小相同的 BitmpaData 并使用 copyPixels() 或 draw() 在其上进行绘制。这是一篇文章 http://www.developria.com/2010/02/dealing-with-bitmapdata.html这应该可以帮助你开始。然后,您可以采用您在那篇文章中学到的概念,并学习您需要做的任何未涵盖的具体内容(flashandmath.com 有很多关于像素操作的优秀教程)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)