//擷取新數組<br />private function getNewArray(myarray:Array):Array<br />{<br />var Temp:Array=new Array();<br />for (var i:int=0; i<myarray.length; i++)<br />{<br />if (myarray[i]!=0)<br />{<br />Temp.push(myarray[i]);<br />}<br />}<br />return Temp;<br />}
今天處理數組的時候,發現一種新的方法處理數組一些長度的問題,由於抽獎程式的時候經常要處理數組的長度,有時候經常要進行刪除數組來擷取新的長度。這時候,想一個辦法處理。大概思路是這樣,
var array:Array=[11,22,33,44];
當我希望進行對數組某一個數進行屏蔽的時候,那麼就對某一個賦予對象為0(這種是小數目的情況下使用)例如
array[0]=0;
array[1]=0;
array[2]=0;
array[3]=0;
這樣,我們可以使用var temp:Array=getNewArray(array);擷取新的數組了。
擷取新的數組temp,它的長度可以隨便改變。
trace(temp.length);//
輸出的結果是不一樣的。
這樣就可以實現到一個可變的長度,然後採用Math.random的方式進行隨機抽取某一個數
var n:int=Math.floor((temp.length)*Math.random());//長度變更
這樣就隨機選取一些結果,實現了一種簡單的抽獎方式了。
switch(temp[n])
{
case 11;
break;
............................
.................
...........
}
過去,曾經製作一些簡單抽獎flash程式,其中很多時候都是使用數組儲存資料,通過長度選擇數組某一個數字,並輸出結果。
這樣完成了簡單抽獎方式了。
總述:
1、抽獎flash實現方式有一種思路,通過數組儲存需要抽取的資料。通過random數,隨機顯示數組長度區間值。然後擷取這個下標。通過輸出螢幕上,這樣就實現簡單抽獎了。
2、注意,為了讓抽獎不重複,有一種思路就是刪除出現的數,然後返回一個新的數組。並且按新的數組長度再隨機抽取。
直到完成為止。
3 、同樣可以採取屏蔽的方式,如隨機播放某一數組下標的時候,對其array[n]=0,賦予為0,然後再使用上面介紹的方法,getNewArray(),但是如果數目太多的話,會影響速度。畢竟屏蔽一次就需要重新掃描一次,這樣效率就不高了。因此注意數組長度不大的時候,可以使用上面的方法。至於適合不適合,還是見仁見智。這裡只是提供一個參考。
註:這些只是筆記記錄。