5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:西安
性别:先生
最后登录:2014-09-24
http://dzxz.5d.cn/
学习编程纯属业余爱好,但时间久了,或多或少就有了一点点的经验和心得。接触 Flash 程序设计是从2005年的10月以后才开始的,在学习Flash的过程中得到了 闪客启航UC聊天室 很多朋友和老师的非常大的帮助,这对我的学习的方向也产生了较大的影响。 目前对游戏设计、课件制作有较浓厚的兴趣,在博客中写了一些这方面的分析文章,与大家一起分享编程的快乐,并且希望我的课件设计方面的讨论对教师朋友能有所帮助。
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/06/08 | 转贴:flash数组的最精简教程
类别(Flash课件设计)
|
评论
(2)
|
阅读(762)
|
发表于 20:47
这个教程出自于网上一位老师的讲课题纲,非常简练但方方面面都讲到了,很多地方有转贴的,我也贴一下,为了以后看的时候好找。原文如下: AS2数组使用:
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;
0
评论
Comments
日志分类
首页
[295]
Flash游戏教程
[33]
Flash与飞行程序设计
[10]
Flash课件设计
[62]
Flash学习笔记
[74]
家住西安
[47]
编程资源
[69]