设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源分享平台

AS2数组使用小结

来源:136z.Com 作者:佚名 时间:2005-06-16 23:45:02

本文节选自本人最近在制作的AS2语法研究报告,供AS爱好者交流,学习。

哪里说得不对或不当,还请指正,谢谢.



数组:
AS2里的数组类型有两个比较牛的地方:
1)数组对象自身可以存放任何数据类型,而不是如C++中的int a[2],char a[3],someClass a[3].
当然,坏处也立刻突现了出来,无法直接创建对象数组。
2)完全的动态数组,使用非常简单,有点像Vector,但同时也更易用出错。这里的动态指的是数组边界的大小(当然,维数还是要声明好的)。

下面是关于数组类型的一些个人认为比较重要点的小结,一些旁枝性的东东都略去了,
哪里少讲了或讲错了什么的话请务必帮我指出一下,大家共同提高:
1
以下声明错误:

vara[1]:Array=newArray();
functiontest(arr[]:Array):Void

2声明方式1(注,这里的声明方式全部使用强类型声明方式)

vara:Array=newArray();
a[0]=0;
a[1]=1;
trace(a);
//Output
0,1

3声明方式2

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

解释:动态数组,用a[4]后长度自动变成5。

4声明方式3
4.1

varb:Array=newArray(0,1,2,3);
trace(b);
0,1,2,3

4.2并不支持这种形式的二维数组的嵌套定义

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

声明方式4

varb: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,23,45,6undefined//用b[0]输出了一个数组行.
1

6二维的维数设定同样是动态的:

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

7其它的二维数组声明方式:
7.1通过行首参数设定相应的列数.
//

2*3ArrayDeclare.
vargRowIndex:Number=2;
vargColIndex:Number=3;
vara:Array=newArray(gRowIndex);
for(vari=0;i{a[i]=newArray(gColIndex);
for(varj=0;j{
a[i][j]=String(i)+String(j);
}
}
trace(a);
//Output
00,01,02,10,11,12

8数组作函数为参数的传递.
8.1

varb:Array=newArray(0,1,2,3);
functiontest(arr:Array):Void
{
trace(arr[0]+""+arr[1]+""+arr[2]+""+arr[3]+"");
}
test(b);
0123

8.2
二维数组:

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

8.3
行首参数的传递:

varb:Array=[[1,2],[3,4],[5,6]];
functiontest(arr:Array):Void
{
trace(arr);
trace(arr[0]+""+arr[1]+"");
}
test(b[0]);
test(b[1]);
test(b[2]);
1,2
12
3,4
34
5,6
56

9更多:
9.1

vargRowIndex:Number=2;
vargColIndex:Number=3;
vara:Array=[[0,1],[3,4,5]];//某个位置空缺某个元素,这里为[0][2]
trace(a);
for(vari=0;i{
for(varj=0;j{
trace(a[i][j]);
}
}
0,1,3,4,5
0
1
undefined
3
4
5

9.2动态维数并不支持

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

9.3一个间接对象数组实现的例子.

varenArray=newArray(3);
//------连接到ENEMY数组---------//
for(varj=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一维:

varp=newArray(1,2,3,4,5);
p.splice(1);
trace(p);
vart=newArray(1,2,3,4,5);
t.splice(2,1);
trace(t);
//Output
1
1,2,4,5

10.2二维情况:

varb:Array=[[1,2],[3,4],[5,6]];
b[0].splice(0);//deletec[0][0]c[0][1]
trace(b);
varc: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长度测试:

varb: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中一样的.

vararr:Array=newArray(1);
arr[0]=newArray(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=newArray();
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;

Tags:

  • 好的评价 如果您觉得好,就请您
      0%(0)
  • 差的评价 如果您觉得差,就请您
      0%(0)
  • 相关文章
    广告赞助

    文章随便看看 设计素材 建站学院 网页模板 视频教程

    网友评论

    共有 0 位网友发表了评论,得分 0 分,平均 0 分    查看完整评论

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 1分

    内 容:

             通知管理员 验证码: