2011/5/27

職業路線

商人:
成本估計
利潤估計
利潤分配
獲利方式:買低賣高


名人:
寫文
出書
演講
上課
獲利方式:知識和品牌形象

2011/5/23

避免 flash 跑大型迴圈造成畫面 lag 的方法

如果想要執行看看的人請下載這個檔,內含有cs4版本的fla
壓縮檔下載

只想看code的人可以點開這個
For.as
ForTest.as

我作了一個 class
用來避免大型迴圈造成畫面 lag 的方法
我沒有作完全的最佳化(覺得不夠最佳化的人自己改code哦)

最基本的用法是
new For(n,function(i){
  //迴圈裡面的程式
});


ForTest 是主程式,需要搭配 forTest.fla 才能執行
用來 demo For 類別的效果

執行後會在畫面上看到兩個在跑的小球
和兩個按鈕 test1 和 test2
test1 是使用一般的for去跑1000次
test2 是使用For類別去跑1000次

如果發生 lag 情況
上面的球就會跑得比下面的球慢
可以試著連續按test2按鈕
觀察lag的情形

當同時存在很多個 for 在執行時,會採取 round-robin 的機制執行

2011/5/18

[心得] ByteArray.compress 壓縮函數

這篇文章描述了使用 compress 並不會減少實際記憶體使用量

以及解決方法

========================= 問題描述 =========================


我有一個 ByteArray 為了節省記憶體 所以要壓縮
var byteArray:ByteArray = 某個很大的ByteArray;


我先觀察一下資料量
var length1:int = byteArray.length;


之後使用壓縮函數
byteArray.compress();

再次觀察
var length2:int = byteArray.length;


看一下壓縮比
trace((1-length2/length1) * 100 + "%");
印出來是 99.xxx%


但是觀察記憶體使用量卻沒有下降



========================== 解決方法 ====================

複製一份 byteArray
var byteArray2 :ByteArray = new ByteArray();
byteArray2.writeBytes(byteArray);


然後把舊的替換掉
byteArray.clear();
byteArray = byteArray2;


就可以看到記憶體確實下降了