這個是 同事 給我的外國得相關的資料
http://www.flashxpress.net/ressources-flash/dopez-votre-framerate-avec-les-classes-animatedbitmap-et-animatedbitmapdata/
http://www.bytearray.org/?p=117
基本上這種做法 叫 香蕉片 ( Banana Slice)
因為香蕉片的 原始碼 我沒找到(所以下面講的香蕉片都是指第一個網址)
不過基本理念(作法)應該和我的做法是一樣的
利用 draw 去繪製 MC 成 bitmapdata
用來取代一些複雜而且多特效(濾鏡.遮罩 大小改變..等等) 的 MC
相關的應該不用介紹了~~ 不過還是簡單的複習一下
先講我看過 第一個網址的東西後 我的是如何改良
香蕉片板
1. 是分成兩段 一段是將MC 產生對應影格數的 bitmapdata
2. 在利用另外一組去將它顯示到場景上
他的做法和我的做法在某種程度上 不謀而合
都會把定時呼叫的東西 拆出來 可以另外的設定
在經過了這樣久之後 再次看到類似作法的人
終於有不孤單的感覺...
不過我發現他有一些繪圖是在做白工!
不過也許是因為他預先一格內畫好全部的關係
所以必須再多繪一次元件上的濾鏡
就我自己的測試 但是不管是程式加的 還是原本元件上有的
只要用 draw 畫下來 基本上都包含了該元件的濾鏡效果
不會有效果的目前發現的有
blendMode
角度 大小
除了 blendMode 相關的處理 都可以參考第一個的 CODE
不過我自己是很猶豫一點!因為是對應 MC 上的角度 和 scale 的屬性!
說不定有一些操作還是會用到
這樣會被 這個 吃掉 可能會造成一些問題!!
我自己得會將原本的 MC 留著 (因為要留著一直去 draw)
所以一些屬性改變的問題 還是會找到原本的 MC 上!
但是香蕉片版卻不會!! 這一點使用上要小心
blendMode 在FLASH 提供的函數就能解決
但問題是 你要將一個 bitmapdata分成超多小區塊~~去處理~
而且大小 形狀 等等的都必須 設定的精準一點才可能
所以這部分是說真的十分得麻煩
目前我沒有好的處理方式! 而且香蕉片的也不處理這一塊
所以我就....先跳過
再來說說效能的部分
我的版本每回合去 draw 大約 800 * 600 左右的大小的 bitmapdata 在 FPS 是 24
CPU 都是在 14~20 左右
但是使用香蕉片的方式 大約是 5~7 左右的 CPU 消耗!!
這樣關鍵的差距 就是在每一格都畫 和 是用已經存好的bitmapdata 間的差距
因為他的 CPU 消耗真得很省 所以我也弄了一個 我的 香蕉片 以下我都簡稱我的香蕉片
唯一作的改良是 原本一格將全部的 MC 畫出 bitmapdata 的部分
改成 每一格都畫 直到全部影格都畫好為止 就會跳去 純粹使用 bitmapdata
而且 整個是 static 的!!! 共用一個主體 一個計時器 !!!
好講幾個關鍵的重點!!
1. 存 bitmapdata 的部分 記得使用 clone 小小的卡了一下
2. 存幾張 bitmapdata 的部分 最好可以手動設定!! 不要自動抓 MC 的影格長度
3. 不要將全部的圖片合成一張 這樣會浪費相當多的 記憶體.....
分開來會比較好一點 不過這個也是要看情況
先就第三點 說一下
本來我有一個設定 可以把在一起的 MC 一起畫
本來每格畫 這個事情就很簡單 也沒問題
但是變成要使用預先畫好的 bitmapdata 時 變成要計算 一起畫的影格的最小公倍數!!
而且存圖區域變成 兩個區域的聯集區域
這一塊一整個麻煩~ 以我遇到的情況 100格對 170格....
原始MC板 記憶體約 36mb
使用香蕉片板 約 19x
使用我的香蕉片板 瞬間突破 270 我就果斷停止了
所以還是分開存會比較省 這個是我最近使用上遇到的情況
我又把那個一起畫的功能拿掉了......
話說這個功能多災多難 我前前後後 大概拿掉了三四次了