首先,我会说这里的上下文是 Actionscript 3.0 (IDE: Flashbuilder) 以及Starling Framework。
所以,我想创建一个可用于平台游戏或类似游戏的平铺地图。
我想在 800x600 像素舞台上使用 8x8 像素图块,我遇到的问题是我不知道如何在不显着降低帧速率的情况下将这些 7500 多个图块对象添加到舞台。
我发现性能下降来自于将每个图块添加到舞台,而不是初始化每个图块对象。
我知道我没有提供太多具体信息,但我要问的是是否有一种标准化的方法可以在不损失性能的情况下将数千个静态对象绘制到舞台上。我觉得有一种方法,我只是还没有找到它。
更新:
在您的所有善意帮助之后,我找到了似乎是一个很好的解决方案。起初我想实现 Amy 的解决方案,使用 copyPixels() 和 draw() 为整个地图制作一个大的位图数据,然后将其渲染到屏幕上。然后,虽然,我想知道是否有与此等效的 Starling,因为如果我不必将 Starling 与 Native Flash 混合,一切都会简单得多。
再次感谢 Amy,我进一步研究了 Starling 的 RenderTexture 类,发现使用它的“drawBundled()”和“draw()”方法,我可以轻松地将所有图块绘制到 RenderTexture 中,然后将 RenderTexture进入一个图像(Starling 的图像类),然后将该图像添加到屏幕上。
该解决方案比我之前尝试过的愚蠢的慢速解决方案快一百万倍,具有扁平化的精灵等。它的初始化时间更快,而且当 renderTexture 的图像在屏幕上时,帧率似乎没有下降。
我想测试的一件事是在游戏过程中是否可以轻松更新图块的图形。比如说,如果水从源头(或某物)扩散,并且“草”图块必须变成“水”图块,那么 RenderTexture 和它的图像是否能够在没有某种延迟峰值或性能故障的情况下改变它们的外观。我很快就会对此进行测试。
谢谢大家的帮助!