作者evileva (小黑要乖喔)
看板Flash
標題[問題] 元漸翻轉後佔用效能居高不下
時間Fri Jun 25 10:04:05 2010
最近在寫的專案上,要用到rotationY與z軸和x軸的翻轉,
寫一個漂亮的翻轉動畫是沒有問題,
但是問題是如果翻轉的對象是一個內容物豐富的元件,
則電腦CPU效能消耗就會居高不下,
我本來以為是我的元件內的子元件在翻轉後,
有些事件會反覆被觸發,
但是我把以前的專案拿來做翻轉,
都依樣會面臨這種問題,
但是假如我要翻轉的元件,是比較單純的元件(內容物較少),
擇效能則會在翻轉完畢後獲得釋放,
不知道有沒有人知道這是什麼問題呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.200.189
1F:推 cjcat2266:render複雜的東西本來就比較吃資源啊 06/25 10:21
2F:→ evileva:但是翻轉完後為什麼效能不會被釋放呢? 06/25 10:22
3F:推 cjcat2266:你翻轉的東西是否本身有動畫? 06/25 10:26
4F:→ cjcat2266:如果本身會一直改變外觀,就會一直重複render 06/25 10:27
5F:→ cjcat2266:3D render跟2D render效能是差很多的 06/25 10:27
6F:→ cjcat2266:因為3D render會強制把元件暫存成點陣圖 06/25 10:27
7F:→ cjcat2266:對於面積大或者複雜的物件來說,這個動作超級吃資源 06/25 10:28
8F:→ evileva:我知道3D翻轉很耗效能 06/25 10:47
9F:→ evileva:但是真的不太清楚翻轉完後,效能被占用到哪邊去了ORZy 06/25 10:47
10F:推 cjcat2266:所以我才問你翻轉的元件有沒有動畫啊 06/25 11:10
11F:→ cjcat2266:就算不繼續3D翻轉,只要元件外觀有變動,就會重新render 06/25 11:11
12F:→ cjcat2266:除非你設定Transform3D.matrix3D = null 06/25 11:12
13F:→ cjcat2266:否則每次更新外關都會繼續以3D方式render 06/25 11:12
14F:→ cjcat2266:就算把rotationXYZ都轉回0度也一樣 06/25 11:12
15F:→ evileva:元件內是有動畫ORZ 06/25 11:15
16F:→ aquarianboy:附個範例如何? 06/25 11:24
17F:→ ben0209:不知道 cacheAsBitmap 有無幫助 06/25 13:02
18F:→ evileva:cacheAsBitmap可以解 感謝 06/25 13:21
19F:→ evileva:之前我想到的方法是不斷把當前元件拍下來 06/25 13:22
20F:→ evileva:然後對拍下來的圖做旋轉 06/25 13:22
21F:→ evileva:這樣在轉的時候效能會花在 拍元件+旋轉圖片上 06/25 13:23
22F:→ evileva:但是還是直接用cacheAsBitmap 06/25 13:23
23F:→ evileva:我錯了 cacheAsBitmap不能解XD 06/25 13:33
24F:推 cjcat2266:3D變形會強制cacheAsBitmap,所以沒差 06/25 13:51
25F:→ cjcat2266:對效能最有利的解法就是拍照,也就是所謂的caching 06/25 13:52
26F:→ cjcat2266:缺點是互動性就沒了 06/25 13:52