[問題] 元漸翻轉後佔用效能居高不下

看板Flash作者 (小黑要乖喔)時間15年前 (2010/06/25 10:04), 編輯推噓4(4022)
留言26則, 4人參與, 最新討論串1/1
最近在寫的專案上,要用到rotationY與z軸和x軸的翻轉, 寫一個漂亮的翻轉動畫是沒有問題, 但是問題是如果翻轉的對象是一個內容物豐富的元件, 則電腦CPU效能消耗就會居高不下, 我本來以為是我的元件內的子元件在翻轉後, 有些事件會反覆被觸發, 但是我把以前的專案拿來做翻轉, 都依樣會面臨這種問題, 但是假如我要翻轉的元件,是比較單純的元件(內容物較少), 擇效能則會在翻轉完畢後獲得釋放, 不知道有沒有人知道這是什麼問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.200.189

06/25 10:21, , 1F
render複雜的東西本來就比較吃資源啊
06/25 10:21, 1F

06/25 10:22, , 2F
但是翻轉完後為什麼效能不會被釋放呢?
06/25 10:22, 2F

06/25 10:26, , 3F
你翻轉的東西是否本身有動畫?
06/25 10:26, 3F

06/25 10:27, , 4F
如果本身會一直改變外觀,就會一直重複render
06/25 10:27, 4F

06/25 10:27, , 5F
3D render跟2D render效能是差很多的
06/25 10:27, 5F

06/25 10:27, , 6F
因為3D render會強制把元件暫存成點陣圖
06/25 10:27, 6F

06/25 10:28, , 7F
對於面積大或者複雜的物件來說,這個動作超級吃資源
06/25 10:28, 7F

06/25 10:47, , 8F
我知道3D翻轉很耗效能
06/25 10:47, 8F

06/25 10:47, , 9F
但是真的不太清楚翻轉完後,效能被占用到哪邊去了ORZy
06/25 10:47, 9F

06/25 11:10, , 10F
所以我才問你翻轉的元件有沒有動畫啊
06/25 11:10, 10F

06/25 11:11, , 11F
就算不繼續3D翻轉,只要元件外觀有變動,就會重新render
06/25 11:11, 11F

06/25 11:12, , 12F
除非你設定Transform3D.matrix3D = null
06/25 11:12, 12F

06/25 11:12, , 13F
否則每次更新外關都會繼續以3D方式render
06/25 11:12, 13F

06/25 11:12, , 14F
就算把rotationXYZ都轉回0度也一樣
06/25 11:12, 14F

06/25 11:15, , 15F
元件內是有動畫ORZ
06/25 11:15, 15F

06/25 11:24, , 16F
附個範例如何?
06/25 11:24, 16F

06/25 13:02, , 17F
不知道 cacheAsBitmap 有無幫助
06/25 13:02, 17F

06/25 13:21, , 18F
cacheAsBitmap可以解 感謝
06/25 13:21, 18F

06/25 13:22, , 19F
之前我想到的方法是不斷把當前元件拍下來
06/25 13:22, 19F

06/25 13:22, , 20F
然後對拍下來的圖做旋轉
06/25 13:22, 20F

06/25 13:23, , 21F
這樣在轉的時候效能會花在 拍元件+旋轉圖片上
06/25 13:23, 21F

06/25 13:23, , 22F
但是還是直接用cacheAsBitmap
06/25 13:23, 22F

06/25 13:33, , 23F
我錯了 cacheAsBitmap不能解XD
06/25 13:33, 23F

06/25 13:51, , 24F
3D變形會強制cacheAsBitmap,所以沒差
06/25 13:51, 24F

06/25 13:52, , 25F
對效能最有利的解法就是拍照,也就是所謂的caching
06/25 13:52, 25F

06/25 13:52, , 26F
缺點是互動性就沒了
06/25 13:52, 26F
文章代碼(AID): #1C90wOck (Flash)