增加Flash场景长度

时间:2011-04-10 12:03:22

标签: flash cs4

我正在进行侧滚动Flash游戏。该级别是预先制作的,因此没有在运行时产生的对象。现在我把这个级别做了很长时间,但是在编辑器窗口中它突然停止了。但是在游戏中它仍然会滚动。

这是在编辑器中。你可以看到滚动条不能再向左移动了。 In game

在游戏中。 enter image description here

级别比编辑器中显示的长。起初它只是将一个物体放在场景的边界以增加它。但那不再适用了。如何增加场景宽度?提前致谢! :)

1 个答案:

答案 0 :(得分:1)

在任何给定时间,您可以在舞台上显示的图像大小有限制。看起来你可能正在推动这个限制,这就是你不能再查看的原因了。

这有多种原因,但归结为闪存DisplayList相对较慢,就Flash进程而言。当你在舞台上处理很多东西时,Flash必须知道每一个对象,如果你有更多的东西,那么你将会得到糟糕的表现。

但是,不要绝望!有很多方法可以解决这个问题。

您需要知道的第一件事是这个限制是针对舞台上的位图。你可以在你的项目中有一个更大,更大的位图 - 只要你不想一次显示整个事物。

大多数游戏框架解决此问题的方式如下:

1)您将所有图像数据存储在幕后,并在那里进行所有图像处理等。

2)在每一帧上,你使用copyPixels()来抓取你在舞台上出现的较大图像部分。这意味着如果您的舞台视图仅显示640x480px,那么您只需复制出较大图像的一部分等于这些尺寸。

3)在舞台上,您只需要一个位图,您可以在第二步中从copyPixels()中写入位图数据。

这被称为“Blitting”,如果这听起来有点复杂,那是因为它。但是,正如我所说,许多游戏框架将为您做繁重的工作。查看Flixel或PushButtonEngine,这是最受欢迎的两个框架。

听起来你现在的方法需要稍微调整才能让它以这种方式工作,但从长远来看我会推荐它 - 你的游戏会变得更易于管理,你会获得更好的性能而且你不必诉诸其他类型的hackery来让你的关卡在整个方面加载。

(快速简便的解决方案是将你的背景分成几个图像,然后在你去的时候将它们交换掉,但是再一次 - 这会在渲染引擎上投入大量的工作,这通常不是你想放的地方你的重物)。

祝你好运!