Re: [問題] 過度使用onEnterFrame造成delay的問題?
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章