作者etrexetrex (ETREX)
看板Flash
标题Re: [问题] 过度使用onEnterFrame造成delay的问题?
时间Tue Aug 29 10:36:58 2006
※ 引述《kazenol (随便啦)》之铭言:
: ※ 引述《wegerx (wegerx)》之铭言:
: : 通常在下列几种状况会消耗更多的效能:
: : 1.渐层色
: : 2.alpha渐变
: : 3.形状曲线数太多
: : 根据我的观察,你的烟火滞留在画面上的时间过久,
: : 如果非必要还是早点从舞台上移除比较好;此外就是渐层色和alpha渐变,
: : 说明文件里都特别提到这会减低拨放效率,对於大量的图形来说还是少用好。
: : 最後是形状曲线数,越复杂的曲线将会消耗越多的计算,
: : 可以的话尽量减少曲线数。
: : 那麽如何看现在的图形有多少曲线呢?虽然我不知道有没有直接看的方法,
: : 但是可以使用修改>形状>最佳化来减少曲线数,
: : 这时面板会显示修改前和修改後的曲线数,如此就可以知道图形有多少曲线了。
: : 顺带一提,一个圆在flash里视为8条曲线。
: 我想问的是,你应该是用 Mc.Duplicate去复制这些烟火吧
每一个烟火存在 createEmptyMovieClip 创造出的MC里
(每点一次滑鼠)
我用的是attachMovie复制烟火亮点,复制进上述的MC
然後给每一颗烟火亮点一个onEnterFrame
烟火MC也有一个onEnterFrame
: 上面网友有提到缩短烟火的寿命,让他早点消失
: 除此之外,你消失後必须要把他移除掉。并不是看不到就表示它不存在了,场景中
: 是越来越多透明的Mc.instance
以下是烟火MC的onEnterFrame
this["fire"+FireI].onEnterFrame = function()
{
//烟火渐渐落下
this._y += 0.5;
//烟火渐渐淡化
this._alpha -= 0.0001;
//当烟火消失後移除烟火
if (this._alpha <= 0 )
this.removeMovieClip();
}
: 我的做法是给一个上限值例如x=200吧,这个x就是dup时的level
: Duplicate时x++,if(x>200){x=1}
: 超过200点後新的点就会从level 1开始使用,位子换人坐。这样场上的物件数目不会
: 超过200,确保运算速度不会被拖跨。当然,你的烟火寿命最好能在达到200前消失,
: 才不会明显看到新点盖旧点的情形。
所以如果想要到达200的上限
你必须在第1个烟火消失之前按199下滑鼠左键
XDDDDD
好啦我知道你说的是烟火亮点
--
无名网志:
http://www.wretch.cc/blog/et284vu065k3
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.74.223