【 tulaoshi.com - Flash 】
                             
                            数组:
AS2里的数组类型有两个比较牛的地方:
1)数组对象自身可以存放任何数据类型,而不是如C++中的int a,char a,someClass a.
当然,坏处也立刻突现了出来,无法直接创建对象数组。
2)完全的动态数组,使用非常简单,有点像Vector,但同时也更易用出错。这里的动态指的是数组边界的大小(当然,维数还是要声明好的)。
下面是关于数组类型的一些个人认为比较重要点的小结,一些旁枝性的东东都略去了,
哪里少讲了或讲错了什么的话请务必帮我指出一下,大家共同提高:
1
以下声明错误:
var a:Array=new Array(); 
function test(arr[]:Array):Void
2声明方式1(注,这里的声明方式全部使用强类型声明方式)
var a:Array=new Array(); 
a[0]=0; 
a=1; 
trace(a); 
//Output 
0,1
3声明方式2
var a:Array=new Array(4); 
a=1; 
trace(a); 
//Output 
undefined,undefined,undefined,undefined,1
解释:动态数组,用a后长度自动变成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+" "+b+" "+b); 
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+" "+b+" "+b); 
trace(b[0][0]); 
1,2,3,4,5,6 
1,2 3,4 5,6 undefined//用b[0]输出了一个数组行. 
1
6二维的维数设定同样是动态的:
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)var b:Array=[[1,2],[3,4],[5,6]]; 
b=12; 
trace(b); 
//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+" "+arr+" "+arr+" "); 
} 
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+" "+arr+" "+arr+" "); 
} 
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+" "); 
} 
test(b[0]); 
test(b); 
test(b); 
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] 
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动态维数并不支持
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)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] 
                        来源:http://www.tulaoshi.com/n/20160129/1488010.html