AS3瓷砖地图渲染(1000块瓷砖)

Bru*_*cef 6 performance tiles actionscript-3 starling-framework

首先,我会说这里的上下文是Actionscript 3.0(IDE:Flashbuilder)以及Starling Framework.

所以,我想创建一个可以用于平台游戏或类似东西的平铺地图.

我想在800x600像素的舞台上使用8x8像素的瓷砖,而我遇到的问题是我不知道如何将这些7500+瓷砖对象添加到舞台而不会显着降低帧速率.

我发现性能下降来自于将每个磁贴添加到舞台,而不是初始化每个Tile对象.

我知道我没有给出太多具体信息,但我要求的是,是否有一种标准化的方法可以在不损失性能的情况下将数千个静态对象绘制到舞台上.我觉得有办法,我还没有找到它.

更新:

在您的所有帮助之后,我发现了一个似乎是一个很好的解决方案.起初我想实现Amy的解决方案,使用copyPixels()和draw()为整个地图制作一个大的位图数据,然后将其渲染到屏幕上.然而,然而,我想知道是否有一个与之相当的Starling,因为如果我不必将Starling与Native Flash混合,一切都会变得如此简单.

再次感谢Amy,我更多地研究了Starling的RenderTexture类,发现使用它的"drawBundled()"和"draw()"方法,我可以轻松地将所有的tile绘制到RenderTexture中,然后放入RenderTexture.进入图像(Starling的图像类),然后将该图像添加到屏幕.

这个解决方案比我之前尝试的愚蠢的慢速解决方案快了一百万倍,还有扁平的精灵等等.它的初始化时间更快,而且当renderTexture的Image在屏幕上时,帧速率似乎没有下降.

我要测试的一件事是,如果在游戏过程中更新瓷砖的图形很容易.比方说,如果水从源(或某物)传播并且"草"瓦片必须变成"水"瓦片,RenderTexture及其图像是否能够在没有某种滞后尖峰或性能打嗝的情况下改变其外观.我会尽快测试一下.

感谢大家的帮助!

Amy*_*hip 9

不要在舞台上添加那么多对象.相反,创建一个与舞台大小相同的BitmpaData,并使用copyPixels()或draw()绘制它.这篇文章应该可以帮助您入门.然后,您可以在该帖子中学习您所学到的概念,并了解您需要做的任何特定内容(flashhandmath.com有很多关于像素操作的好教程)