当前位置:软件学习 > Flash >>

AS3 数组乱序实现代码

自己写的一个数组乱序实例。

 代码如下 复制代码

var _arr:Array=new Array(9,8,7,6,5,4,3,2,1);
randomArray(_arr);
trace(_arr);
 
function randomArray(arr:Array):Array {
 return arr.sort(random_fun);
 function random_fun(a:*, b:*):int {
  if (Math.random() < 0.5) {
   return -1;
  }
  return 1;
 }
}

先定义一个带有两个形参的函数,表示数组冒泡排序时的两个比较的元素,该函数返回1,0,-1的随机值,通过每次比较时所得到的不同随机值来排序,实现打乱顺序,我选择了数组中一个元素(一张牌)来trace()牌的序号,发现乱序不是很彻底,就想到是否应让用于乱序的函数返回的值有更多的可能,再trace()一下,乱得比较彻底了,改过后的情况如下:

 代码如下 复制代码

function sortF(a:MovieClip,b:MovieClip):int {

return int(Math.random()*52);//乱序用,增加了返回值的范围,便于更加彻底的乱序

}

mcArr.sort(sortF);

trace(mcArr[0].i);

另附一段可以正常测试的代码:

 代码如下 复制代码

var arr:Array=[];

for (var i:int=0; i<30; i++) {

arr[i]=i;

}

trace(arr);

function sortF(a,b):int {

return Math.floor(Math.random()*3-1);//将*3改为*30试试,效果要好得多

}

arr.sort(sortF);

trace(arr);

补充:flash教程,As3.0
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,