AS3中的随机字符串

时间:2013-07-24 10:18:08

标签: string actionscript-3 random code-cleanup

我最近参与过AS3项目,其模块的工作原理如下:

我有50个字符串,我在给定时间随机选择一个。当我完成所选择的一个后,我选择了另外一个49再次随机离开,依此类推。

我设法使用辅助数组来解决这个问题,对于循环,使用字符串映射索引号。虽然每件事情都很好但我发现我的代码非常混乱且难以理解。

AS3中是否有更简单,更清晰的方法来解决这个问题?

也许有一个库可以随机输出字符串?

2 个答案:

答案 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  
}