十一月 26, 2009 12 : 47 下午 此格有 33 个脚印
即时获得麻球游戏开发的最新消息,关注游戏开发者热门讨论,请各位开发者申请加入麻球官方群:121304476
也可以follow catfly围脖:t.sina.com.cn/iscat
也可以follow catfly围脖:t.sina.com.cn/iscat
曾经有设计者问我,需要掌握哪些东西才能学好actionscript,我毫不犹豫给他推荐了"array",几乎我们平时的程序编写中,存放数据,交换数据,变换数据都会用到这个神奇的数组:Array。
我在这里提一下,可能有人一开始没太注意:
您可以在数组元素中存储各种各样的数据类型,包括数字、字符串、对象,甚至是其它数组。
基本的东西我只简单介绍下,就不多说了,数组的常用方法无非是:
push(… args)
arr.pop()
arr.splice()
arr.indexOf()
下面是一些在实际开发中会常见到的几种不错的应用:
数组元素之和
function arraySum(arr:Array,n:uint):uint {
if (n>arr.length) {
n=arr.length;
}
var total:uint=0;
for (var k:uint=0; k<n; k++) {
total=total+arr[k];
}
return total;
}
数组元素连接成字符串(有更简便的方法,见后文)
function arrToString(tempArray:Array):String {
var tempString:String;
for (var i:uint=0; i<timeInfo.length; i++) {
if (i==0) {
tempString=tempArray[0];
} else {
tempString+="|"+tempArray[i];
}
}
return tempString;
}
随机取数组中的一个元素
var rsArr:Array=new Array ;
var dataArr:Array=[1,24,23,2];
var dataLength:uint=dataArr.length;
randomArr(dataArr);
function randomArr(arr:Array):void {
for (var i:uint=0; i<dataLength; i++) {
var arrIndex:uint=Math.random()*arr.length;
rsArr[i]=arr[arrIndex];
arr.splice(arrIndex,1);
}
trace(rsArr);
}
去除数组元素中的干扰成分后再进行排序
var arr0:Array=new Array("苹果:4.8","香蕉:1.8","桔子:2.3","番茄:1.2");
arr0.sort(order0);
trace(arr0);
function order0(a,b) {
var ceil1 = a.split(":")[1];
var ceil2 = b.split(":")[1];
if (ceil1>ceil2) {
return 1;
} else if (ceil1<ceil2) {
return -1;
} else {
return 0;
}
}
根据数组中对象的某个属性进行排序
var arr:Array = new Array();
for (var i:uint=0; i<5; i++) {
var obj:Object = new Object();
obj.name="anim"+i;
obj.time=0.5+int(Math.random()*15);
arr.push(obj);
trace(arr[i].time);
}
arr.sort(order);
function order(a,b) {
if (a["time"]>b["time"]) {
return 1;
} else if (a["time"]<b["time"]) {
return -1;
} else {
return 0;
}
}
再补充说一下,数组自带的两个方法,可能大家没留意的用法
arr.concat(… args)有同事问我如何不用跑循环就可以把两个数组合成一个,concat方法就是为这个目的而设计的。
var numbers:Array = new Array(1, 2, 3);
var letters:Array = new Array("a", "b", "c");
var numbersAndLetters:Array = numbers.concat(letters);
arr.join(sep:*)很方便的在数组元素间插入指定的分隔符、连接这些元素然后返回结果字符串。
上面的arrToString方法,用join方法很简单就可以实现了。
var myArr:Array = new Array("one", "two", "three");
trace(myArr.join("|"));
还有个很简单的问题,可能有些actionscript初学者没注意到。那就是如何清空或重置数组?
数组没有自带这样的方法,其实只要把一个新的空数组赋值给它就行了。
arr = new Array(); 





