ActionScript數組使用小結

來源:互聯網
上載者:User
數組 本文節選自本人最近在製作的AS2文法研究報告,供AS愛好者交流,學習。

哪裡說得不對或不當,還請指正,謝謝.

數組:
AS2裡的數群組類型有兩個比較牛的地方:
1)數組對象自身可以存放任何資料類型,而不是如C++中的int a[2],char a[3],someClass a[3].
當然,壞處也立刻突現了出來,無法直接建立對象數組。
2)完全的動態數組,使用非常簡單,有點像Vector,但同時也更易用出錯。這裡的動態指的是數組邊界的大小(當然,維數還是要聲明好的)。

下面是關於數群組類型的一些個人認為比較重要點的小結,一些旁枝性的東東都略去了,
哪裡少講了或講錯了什麼的話請務必幫我指出一下,大家共同提高:
1
以下聲明錯誤:

var a[1]:Array=new Array();
function test(arr[]:Array):Void

2聲明方式1(注,這裡的聲明方式全部使用強型別聲明方式)

var a:Array=new Array();
a[0]=0;
a[1]=1;
trace(a);
//Output
0,1

3聲明方式2

var a:Array=new Array(4);
a[4]=1;
trace(a);
//Output
undefined,undefined,undefined,undefined,1

解釋:動態數組,用a[4]後長度自動變成5。

4聲明方式3
4.1

var b:Array=new Array(0,1,2,3);
trace(b);
0,1,2,3

4.2並不支援這種形式的二維數組的嵌套定義

var b:Array=new Array((1,2),(3,4),(5,6));
trace(b);
trace(b[0]+" "+b[1]+" "+b[2]+" "+b[3]);
trace(b[0][0]);
2,4,6
2 4 6 undefined undefined
5用[]取代了C++中的{};

聲明方式4

var b:Array=[[1,2],[3,4],[5,6]];
trace(b);
trace(b[0]+" "+b[1]+" "+b[2]+" "+b[3]);
trace(b[0][0]);
1,2,3,4,5,6
1,2 3,4 5,6 undefined//用b[0]輸出了一個數組行.
1

6二維的維數設定同樣是動態:

var b:Array=[[1,2],[3,4],[5,6]];
b[2][3]=12;
trace(b[2][3]);
//Output
12

7其它的二維數組聲明方式:
7.1通過行首參數設定相應的列數.
//

2*3 Array Declare.
var gRowIndex:Number=2;
var gColIndex:Number=3;
var a:Array=new Array(gRowIndex);
for (var i=0;i<gRowIndex;i++)
{ a[i]=new Array(gColIndex);
for (var j=0;j<gColIndex;j++)
{
a[i][j]=String(i)+String(j);
}
}
trace(a);
//Output
00,01,02,10,11,12

8數組作函數為參數的傳遞.
8.1

var b:Array=new Array(0,1,2,3);
function test(arr:Array):Void
{
trace(arr[0]+" "+arr[1]+" "+arr[2]+" "+arr[3]+" ");
}
test(b);
0 1 2 3

8.2
二維數組:

var b:Array=[[1,2],[3,4],[5,6]];
function test(arr:Array):Void
{
trace(arr);
trace(arr[0]+" "+arr[1]+" "+arr[2]+" "+arr[3]+" ");
}
test(b);
1,2,3,4,5,6
1,2 3,4 5,6 undefined

8.3
行首參數的傳遞:

var b:Array=[[1,2],[3,4],[5,6]];
function test(arr:Array):Void
{
trace(arr);
trace(arr[0]+" "+arr[1]+" ");
}
test(b[0]);
test(b[1]);
test(b[2]);
1,2
1 2
3,4
3 4
5,6
5 6

9更多:
9.1

var gRowIndex:Number=2;
var gColIndex:Number=3;
var a:Array=[[0,1],[3,4,5]];//某個位置空缺某個元素,這裡為[0][2]
trace(a);
for (var i=0;i<gRowIndex;i++)
{
for (var j=0;j<gColIndex;j++)
{
trace(a[i][j]);
}
}
0,1,3,4,5
0
1
undefined
3
4
5

9.2動態維數並不支援

var b:Array=[5,6];
b[0][0]=3;
trace(b[0][0]);
//Output
undefined。

9.3一個間接對象數組實現的例子.

var enArray=new Array(3);
// ------ 串連到ENEMY數組 --------- //
for(var j=0;j<3;j++){
attachMovie("baddie", "baddie"+j, 200+j);
enArray[j] = _root["baddie"+j];
enArray[j]._x = 50*j;
enArray[j]._y = 100;
}

9.4
還有很多實際中用得到的例子,比方說,用array 來儲存顏色資料,載入圖片的變數名等等。


10刪除數組元素:
10.1一維:

var p=new Array(1,2,3,4,5);
p.splice(1);
trace(p);
var t=new Array(1,2,3,4,5);
t.splice(2,1);
trace(t);
//Output
1
1,2,4,5

10.2二維情況:

var b:Array=[[1,2],[3,4],[5,6]];
b[0].splice(0);//delete c[0][0] c[0][1]
trace(b);
var c:Array=[[1,2],[3,4],[5,6]];
c[1].splice(1);//c[1][1]
trace(c);
,3,4,5,6
1,2,3,5,6

11長度測試:

var b:Array=[[1,2,2],[3,4],[5,6,4,5]];
trace(b.length);
trace(b[0].length);
trace(b[2].length);
//Output
3
3
4

=========================================================
一個月後的補充:
11動態維數:跟JAVA中一樣的.

var arr:Array=new Array(1);
arr[0]=new Array(3);
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
trace(arr);
trace(arr[0][0]);
trace(arr[0][1]);
trace(arr[0][2]);
1,2,3
1
2

12載入資料的新方式(多重屬性):

mData=new Array();
mData.addItem({ label: "二球動量守恒(一維)" ,data:0});
mData.addItem({ label: "三球動量守恒(一維)" ,data:1});
mData.addItem({ label: "多球平面碰撞(二維)",data:2});
mData.addItem({ label: "子母球",data:3});

用於配合V2Component中的ComboBox的使用:

_root.menuCombo.dataProvider=mData;

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。