我最近参与过AS3项目,其模块的工作原理如下:
我有50个字符串,我在给定时间随机选择一个。当我完成所选择的一个后,我选择了另外一个49再次随机离开,依此类推。
我设法使用辅助数组来解决这个问题,对于循环,使用字符串映射索引号。虽然每件事情都很好但我发现我的代码非常混乱且难以理解。
AS3中是否有更简单,更清晰的方法来解决这个问题?
也许有一个库可以随机输出字符串?
答案 0 :(得分:3)
像这个类一样简单:
public class StringList
{
private var _items:Array = [];
public function StringList(items:Array)
{
_items = items.slice();
}
public function get random():String
{
var index:int = Math.random() * _items.length;
return _items.splice(index, 1);
}
public function get remaining():int{ return _items.length; }
}
及其用法:
var list:StringList = new StringList(['a', 'b', 'c', 'd']);
while(list.remaining > 0)
{
trace(list.random);
}
答案 1 :(得分:1)
我不确定你想用这个程序做什么,但这里有一个建议:
var stringArray:Array = new Array("string1", "string2", "string2"); //your array with strings
var xlen:uint = stringArray.length-1; //we get number of iterations
for (var x:int = xlen; x >= 0; x--){ //we iterate backwards
var randomKey:Number = Math.floor(Math.random()*stringArray.length); //gives you whole numbers from 0 to (number of items in array - 1)
stringArray.splice(randomKey,1); //remove item from array with randomKey index key
var str:String = stringArray[randomKey]; //output item into new string variable or do whatever
}