首先,您可以完全控制您的资源的唯一方法是,如果您将时间线保留为预期用途,以 swc 或 swf 格式创建和导出资产,您可以嵌入前者,然后嵌入或加载后者.
您应该做的是学习如何以面向对象的方式进行开发,从 Document 类开始(当您使用 CS6 时),然后使用一系列已定义任务的类来构建您的游戏。使用类可以提高整个游戏的可重用性。根据复杂性,我会考虑像 PureMVC 或机器人腿这样的框架。
Flash 中的垃圾收集是标记和清除,这意味着您必须取消引用所有对象,这通常从删除关联的侦听器、计时器以及对它们的任何进一步引用开始,例如。从数组或对象哈希中清除。最后,您将有问题的对象设置为 null ,这使其“符合”垃圾收集条件,但实际上并不能保证它。Flash 会在它认为合适的时候进行清理。
就个人而言,如果你能掌握 Flash Builder,它有一个很棒的内存管理分析工具,当你使用上面提到的 OOP 进行开发时,你可以使用这个工具来查看游戏中存在的所有实例。现在这里的好处是您可以及时进行内存快照,并比较它们以查看哪些对象徘徊并导致内存泄漏。您应该在捕获快照之间调用一个垃圾收集按钮,这仅在您正在开发时可用,尽管使用 Adobe AIR 您可以手动强制 gc 调用。
关于你的奖金问题,我不确定你是如何做这个 blitting 的,如果你在舞台上添加对象,这会增加内存,你无法避免这种情况。你所说的 1px 厚的是 flash 渲染的内容,你可以通过右键单击舞台并选择重绘区域选项来查看正在重绘的内容,看到一个红色框显示 flash 必须重绘的内容,它只会重绘它需要的内容到,这对于检查您的帧速率是否受到影响很有用。
所以总结一下:
考虑使用 Flash CS6 创建资源。
了解 Actionscript 3 中的面向对象编程。
考虑在 Flash Builder(或免费的 Flash Develop)中进行开发。
OOP 将帮助组织和取消引用垃圾收集的对象。
我希望这对您的游戏有所帮助并祝您好运。