我一直在制作Flash游戏,我通过附加儿童动画片段将动画片段添加到动画片段中。这创建了具有不同动画的电影剪辑的层次结构,但结果是父电影剪辑最终无限增长并且占用大量内存。有没有办法可以优化这样的动画?如果位图缓存有效,我是否可以缓存在运行时之前添加的所有子项(例如,在设计期间和发布SWF之前添加的子项动画片段。)
PS我正在使用Flash Air 2.6,如果有任何帮助的话。
答案 0 :(得分:1)
嗯,你自己给出了答案,Flash可以做很多但没有无限量的内存。无论你的动画设计得很好,如果父电影剪辑“无限增长”,那么当然会有一切都会崩溃。
根据所提供的信息,我只能给你一般答案。
添加无限数量的儿童是不可能的,但如果你继续删除超出范围的儿童,你肯定会给人留下这样的印象。
有没有办法可以通过避免重复来改善您的设计?
您是在Flash IDE中工作还是使用其他IDE,例如FlashBuilder,后者具有可用于检查应用程序内存使用情况的分析工具。
答案 1 :(得分:1)
补充Patrick说的话: 位图缓存可能会使用更多内存,具体取决于您的操作方式。但是,如果您有多个相同内容的实例,则只能制作其中一个实例,并在任何地方重复使用其像素,类似于您在此处http://flexdiary.blogspot.com/2009/12/riadventure-inspiration.html所看到的内容。
您可能还想查看对象池http://blog.joa-ebert.com/2008/05/07/tweening-and-object-pools/。
然而,当内存开始失控时,我通常怀疑你通过向对象添加侦听器而不是删除它们来导致内存泄漏(因此它们不能被垃圾回收)。您可能导致内存泄漏的其他方法是通过字典引用对象或使用setTimeout而不正确调用clearTimeout。