作者kazenol (随便啦)
看板Flash
标题Re: [问题] 过度使用onEnterFrame造成delay的问题?
时间Tue Aug 29 10:09:00 2006
※ 引述《wegerx (wegerx)》之铭言:
: ※ 引述《etrexetrex (ETREX)》之铭言:
: : http://student.scvs.tpc.edu.tw/~s119069/FLASH/temp/fire1.html
: : 以上是我出问题的FLASH
: : 这个FLASH是模仿烟火
: : 在画面点一下左键就会产生一圈烟火
: : =
: : 请注意每一颗烟火亮点都是动态产生的影片片段
: : 为了让每一颗烟火亮点能够移动,我必须使用【烟火亮点i.onEnterFrame】
: : 这个事件去控制烟火亮点的位置
: : 当你在画面上狂点左键时,烟火的移动速度会明显的下降
: : 原因是CPU使用率到达100%
: : 请问除了【烟火事先做好(不计算烟火亮点的移动)】这个方法之外
: : 有没有可能让这个效能提升
: : 例如用 setInterval 会不会比较快之类的?
: 通常在下列几种状况会消耗更多的效能:
: 1.渐层色
: 2.alpha渐变
: 3.形状曲线数太多
: 根据我的观察,你的烟火滞留在画面上的时间过久,
: 如果非必要还是早点从舞台上移除比较好;此外就是渐层色和alpha渐变,
: 说明文件里都特别提到这会减低拨放效率,对於大量的图形来说还是少用好。
: 最後是形状曲线数,越复杂的曲线将会消耗越多的计算,
: 可以的话尽量减少曲线数。
: 那麽如何看现在的图形有多少曲线呢?虽然我不知道有没有直接看的方法,
: 但是可以使用修改>形状>最佳化来减少曲线数,
: 这时面板会显示修改前和修改後的曲线数,如此就可以知道图形有多少曲线了。
: 顺带一提,一个圆在flash里视为8条曲线。
我想问的是,你应该是用 Mc.Duplicate去复制这些烟火吧
上面网友有提到缩短烟火的寿命,让他早点消失
除此之外,你消失後必须要把他移除掉。并不是看不到就表示它不存在了,场景中
是越来越多透明的Mc.instance
我的做法是给一个上限值例如x=200吧,这个x就是dup时的level
Duplicate时x++,if(x>200){x=1}
超过200点後新的点就会从level 1开始使用,位子换人坐。这样场上的物件数目不会
超过200,确保运算速度不会被拖跨。当然,你的烟火寿命最好能在达到200前消失,
才不会明显看到新点盖旧点的情形。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.174.241
1F:推 afu70:其实如果MC有所谓的深度层级问题 消失用removeMovieClipt() 09/01 02:09
2F:→ afu70:就不会覆盖其他MC 只不过depths有上限 超过就会出问题 09/01 02:13