我正在开发一个2D射击游戏,有很多对象和激进的滚动。
问题: 哪种方式更好?
选择1 - 使用本机Flash渲染:
- 从Bitmap派生游戏对象,使用现有的x、y、width、height、bitmapData
- 将所有对象作为子项UIComponent.addChild(...)添加到屏幕上
- 使用"scrollRect"剪裁可见区域
选择2 - 使用"位图+copyPixels"编写自定义渲染
- 使用自己的游戏对象和x、y、width、height、bitmapData
- 将Bitmap添加到屏幕上,并从中获取bitmapData
- 每个ENTER_FRAME重新绘制:bitmapData.lock(),迭代游戏对象并将其copyPixels()到bitmapData中,然后bitmapData.unlock()
- 自定义剪裁:不呈现屏幕外的对象
在这个问题中,一些人抱怨"位图+copyPixels()"太慢了。
实验: 我已经实现了这两种技术:
- main_1.swf - 本机
- main_2.swf - 自定义
请尝试它们并告诉我哪一个更好(更快、更流畅、占用CPU更少)。
等到至少有250个敌人(屏幕上方的计数器)。
更新: 尝试打开任务管理器(或$top)并查看整体CPU使用率
更新2: 我已经改变了代码,现在小怪物产生得更快了。