Re: [問題] 過度使用onEnterFrame造成delay的問題?

看板Flash作者 (ETREX)時間19年前 (2006/08/29 10:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《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
文章代碼(AID): #14ywQI0S (Flash)
文章代碼(AID): #14ywQI0S (Flash)