Flash 面试题汇总:性能优化、弱引用、组件优化

需积分: 9 6 下载量 96 浏览量 更新于2024-09-16 2 收藏 88KB DOCX 举报
FLASH面试题解读 一、弱引用和强引用 在AS3中,弱引用主要被应用在addEventListener方法和词典(Dictionary)对象中。弱引用可以使得对象在合适的时候被GC回收掉,而强引用则不同,它的引用包括了当前对象在对象树上的标记也包括当前对象有无做其他引用。强引用会使得对象即使被置为null,也不会被GC直接回收。 要真正将一个对象被回收,需要注意两点:一是保证该对象没有任何其他的引用,二是保证该对象身上没有任何侦听。词典的弱引用和addEventListener原理一样,但是词典是对key值做了弱引用,在AS3中词典保留了对value的强引用。因此,真正删除对象必须先delete掉value的强引用。 二、读取生成对象的效率问题 在AS3中,使用for循环的效率在数据量大的时候的确很低。使用foreach来遍历数组可以提升可能不止一个量级的速度。此外,在开发过程中,我们习惯的使用new来生成新的对象,但是要知道在对变量进行申明时就预寻址,效率能带来提升。同时,创建空对象时使用new比直接{}赋值速度要慢很多。数组也是这个道理。 三、组件的优化 组件其实也是一个游戏中大量占用内存的东西,可能在一般游戏中除了资源处理以外就属他了。所以,对于底层组件要记得尽量做到如下几点: 1. 避免使用自带的组件,这些组件为了具有通用性,往往会关联性很强,导致最终的执行效率很低。 2. 即使使用自带组件也记得在底层进行重构,因为AS3的事件冒泡是基于对象树的,而鼠标交互都属于事件类型的一种,每次移入移出点击释放都会涉及到冒泡,所以最直接的方法就是把MouseChildren和MouseEnabled禁掉,以防止一些原本不需要冒泡的组件进行冒泡。 3. 自定义组件时记得面板的选择,在AS3中总共有几个分类,Shape(简单位图)等。 四、性能优化 在FLASH开发中,性能优化是一个非常重要的问题。我们可以通过优化算法、缓存、减少循环次数等方式来提高性能。此外,我们还可以使用 Profile tool来检测应用程序的性能瓶颈,从而进行优化。 五、 FLASH中的垃圾回收机制 FLASH中的垃圾回收机制是基于标记-清除算法的。它首先标记所有活动对象,然后清除未被标记的对象。在垃圾回收过程中,FLASH会停止所有的脚本执行,以便进行垃圾回收。因此,在垃圾回收过程中,我们不能进行任何脚本操作。 FLASH面试题涵盖了 FLASH开发中的多个方面,包括弱引用和强引用、读取生成对象的效率问题、组件的优化、性能优化等。只有充分理解这些知识点,才能更好地应对FLASH面试。