当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > AS2数组使用小结

Flash动画制作
Flash 3d效果精彩实例(5)
贺新年 制作五彩缤纷焰火动画
FlashMX2004中的XML应用之原理篇
制作一个骄艳的鲜花情人Flash贺卡
有趣 用Flash制作互动的小人
Flash制作鸡年新春动画贺卡
Flash MX 2004 UI组件系列教程(3)
Flash加载外部文件(5)
Flash MX 2004 UI组件系列教程(4)
Flash加载外部文件(2)
Flash加载外部文件(3)
一个最简便的代码实现任意数字和0的来回跳转
让Flash课件中测试题信手拈来
MX中如何实现swf文件的完美跳转
三分钟理解Flash中的级别关系
flash与ASP通信的几种方法
flashMX2004视频插件的应用教程
如何做好一个多人配合的flash项目
AS计算方面的错误
如何防止SWF文件被反编译

Flash动画制作 中的 AS2数组使用小结


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 76 ::
收藏到网摘: n/a

数组:
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二维的维数设定同样是动态的:

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动态维数并不支持

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]