Flash 滚动背景
我想更好地了解Flash是如何渲染显示对象的,因此我对如何优化我的游戏有了更好的想法 我之前创建了一个具有滚动、重复(和视差)背景的游戏。我将其平铺并缓存为位图,这在考虑在背景中设置显示对象的动画时非常痛苦。有更好的方法吗Flash 滚动背景,flash,Flash,我想更好地了解Flash是如何渲染显示对象的,因此我对如何优化我的游戏有了更好的想法 我之前创建了一个具有滚动、重复(和视差)背景的游戏。我将其平铺并缓存为位图,这在考虑在背景中设置显示对象的动画时非常痛苦。有更好的方法吗 另一个问题是,如果我有一个大的位图(或者我缓存为位图的矢量艺术),如果它完全脱离屏幕,是否会对性能造成影响?如果部分在屏幕上,flash是否必须渲染整个位图,或者只渲染屏幕上看到的位图?如果它不在屏幕内,即使在屏幕外也会渲染。当剪辑达到舞台宽度时,最好有一个输入帧侦听器或类似
另一个问题是,如果我有一个大的位图(或者我缓存为位图的矢量艺术),如果它完全脱离屏幕,是否会对性能造成影响?如果部分在屏幕上,flash是否必须渲染整个位图,或者只渲染屏幕上看到的位图?如果它不在屏幕内,即使在屏幕外也会渲染。当剪辑达到舞台宽度时,最好有一个输入帧侦听器或类似的东西来检测,然后在滚动movieclip的末尾添加另一个背景实例。然后,为了提高性能,使用scrollRect只渲染当前阶段上的内容 也许您可以研究像这样的库是如何处理这些问题并创建其优化的
我可以合理地确定,至少当缓存的位图完全脱离屏幕或隐藏时,内存会被释放,但我不知道部分情况,我希望不会。这篇文章可能会回答您的一些疑问(tbh:)如果没有动画,您应该只缓存位图,而不是缩放和旋转它。垂直和水平运动都很好。否则,每次MovieClip更改时,它都需要重新缓存它,这比根本不缓存它的成本更高 如果它不在舞台上,请将其从显示列表中删除或将其可见性设置为false
您可以使用内存管理组件进行一些良好的测试。调整东西,看看它对你的记忆/fps等有什么影响。Mrdoob有一个非常好的 您有几个滚动背景选项:
使用cacheAsBitmapMatrix的DisplayObjects可以在不重新缓存的情况下进行转换。顺便说一句,这并不能回答问题。我的理解是cacheAsBitmapMatrix仅在某些移动设备上可用。