2008-04-25
2008-04-18
AS3 亂數排序的效能
利用三種方式來實作亂數排序的功能, 並比較效能
A. 製作 Array.sort() 的排序函式
B. 大風吹, 兩兩隨機交換位置
C. 使用 splice() 隨機一個個切出來
結果 B 效能最佳:
Flash Frame Actions:
A. 製作 Array.sort() 的排序函式
B. 大風吹, 兩兩隨機交換位置
C. 使用 splice() 隨機一個個切出來
結果 B 效能最佳:
A: 2116
B: 66
C: 3828
Flash Frame Actions:
/*
*******
A. 配合 Array.sort() 使用
*******
*/
function shuffle_1(...args):int
{
return Math.floor(3 * Math.random()) - 1;
}
/*
*******
B. 大風吹, 隨機交換位置
*******
*/
function shuffle_2(ar:Array):void
{
var rnd:int;
var tmp:Object;
for (var i:int=0; i < ar.length; i++) {
rnd = Math.floor(Math.random()*ar.length);
tmp = ar[i];
ar[i] = ar[rnd];
ar[rnd] = tmp;
}
}
/*
*******
C. 隨機一個一個取出, 推入新陣列
*******
*/
function shuffle_3(ar:Array):Array
{
var br:Array = [];
var rnd:int;
var cr:Array;
while (ar.length)
{
rnd = Math.floor(Math.random()*ar.length);
//cr = ar.splice(rnd, 1);
br.push( ar.splice(rnd, 1)[0] );
}
return br;
}
/*****************************************/
var ar:Array = [];
for (var i:int=0; i < 100000; i++) {
ar.push(i);
}
var t:int = getTimer();
ar.sort(shuffle_1);
trace("A: "+ (getTimer()-t) );
t = getTimer();
shuffle_2(ar);
trace("B: "+ (getTimer()-t) );
t = getTimer();
ar = shuffle_3(ar);
trace("C: "+ (getTimer()-t) );
2008-04-17
Popup Modal MovieClip for Flash/AS3
Flex 有 PopUpManager 可以 pop-up window 或 custom component
Flash CS3/AS3 則沒有 :(
若只是用個 PopUpManager, 以 Flex 發佈後實在有點肥大...
我在網路上找了老半天, 只找到 Yahoo ASTRA Flash Components 裡提供的 AlertManager. 不過功能實在太陽春, 想說做點客制化, 改著改著幾乎跟重寫差不多了. 版權 follow BSD.
Demo:
Flash CS3/AS3 則沒有 :(
若只是用個 PopUpManager, 以 Flex 發佈後實在有點肥大...
我在網路上找了老半天, 只找到 Yahoo ASTRA Flash Components 裡提供的 AlertManager. 不過功能實在太陽春, 想說做點客制化, 改著改著幾乎跟重寫差不多了. 版權 follow BSD.
Demo:
2008-04-14
2008-04-11
訂閱:
文章 (Atom)