我可以在动作脚本中更改我的随机数

时间:2011-05-23 18:36:53

标签: flash actionscript action

大家好 我需要更改动作脚本中输出的随机数。 你会看到即时通讯获得5个不同位置的5个随机数字,但它限制了每个位置的数量。

_loc_2 = Math.floor(Math.random() * 4) + 1;
Cone.text = "" + _loc_2;
_loc_3 = Math.floor(Math.random() * 4) + 5;
Ctwo.text = "" + _loc_3;
_loc_4 = Math.floor(Math.random() * 2) + 9;
Cthree.text = "" + _loc_4;
_loc_5 = Math.floor(Math.random() * 2) + 11;
Cfour.text = "" + _loc_5;
_loc_6 = Math.floor(Math.random() * 3) + 13;
Cfive.text = "" + _loc_6;

我需要将其更改为此随机1到15但没有生成重复的数字,

_loc_2 = Math.floor(Math.random() * 15) + 1;
Cone.text = "" + _loc_2;
_loc_3 = Math.floor(Math.random() * 15) + 1;
Ctwo.text = "" + _loc_3;
_loc_4 = Math.floor(Math.random() * 15) + 1;
Cthree.text = "" + _loc_4;
_loc_5 = Math.floor(Math.random() * 15) + 1;
Cfour.text = "" + _loc_5;
_loc_6 = Math.floor(Math.random() * 15) + 1;
Cfive.text = "" + _loc_6;

可以在动作脚本中完成吗?

提前谢谢 戴夫

1 个答案:

答案 0 :(得分:1)

所以你想以随机顺序生成数字1-15而不重复?

可能有很多方法可以做到这一点,但这里有一个我的头脑:

var numberSource:Array = [];

function initArray(maxValue:int):void {
 for (var i:int = 0; i < maxValue; i++) {
  numberSource[i] = i + 1;
 }
}

function getNumber():int { 
 var index:int = int(Math.random * (numberSource.length - 1));
 return numberSource.splice(index, 1);
}

所以你要调用initArray(15),然后调用getNumber(),每次弹出一个值并返回它。你永远不应该得到重复,你应该最终获得每个数字。我没有对此进行测试,因此可能存在某种故障,但至少应该给你一个好的起点! :)