如何使用AS3在没有重复的文本中显示我的数组?

时间:2016-10-17 09:22:43

标签: actionscript-3

var arr:Array = new Array("A","B","C")
        //random number
        var rand:Number = Math.floor(Math.random()*arr.length)
        //my text 
        t1.text = arr[rand]
        t2.text = arr[rand]
        t3.text = arr[rand]

3 个答案:

答案 0 :(得分:1)

这样的东西
private function getRandomText():String
{
    var rand:Number = Math.floor(Math.random() * arr.length);

    // this will both get you the random string from the array 
    // and remove it from the array making sure you won't get the same text next time
    var randomString:String = arr.splice(rand, 1);

    return randomString;
}

t1.text = getRandomText();
t2.text = getRandomText();
t3.text = getRandomText();

当然,这将通过删除显示的字符串来修改数组。因此,如果您需要保留阵列以备将来使用,则需要复制该数组并使用副本

答案 1 :(得分:1)

在我看来,你可以使用这种功能。 这是快速完成但我认为避免每次在do while循环中检查(无用且较慢)。 因此,您可以根据需要轻松更改代码...

var choices:Vector.<String> = new <String>["A","B","C","D","E","F"];
var randomChoices:Vector.<String> = new Vector.<String>();
var choicesBackup:Vector.<String>;

function populateLetters():void{
    var n: uint = Math.floor(Math.random()*choices.length);
    randomChoices.push(choices[n]);
    choices.splice(n,1);
}

function getDifferentLetters():Vector.<String>{
    choicesBackup = choices.slice();
    randomChoices = new Vector.<String>();
    for(var i:uint=choices.length; i>0; i--){
        populateLetters();
    }
    choices = choicesBackup.slice();
    return randomChoices;
}


trace ("letters = " + choices + ", flush = " + getDifferentLetters());

// output : letters = A,B,C,D,E,F, flush = D,E,B,C,F,A

答案 2 :(得分:0)

如果我错过了什么,请告诉我!

T1.text = getDifferentLetters();

...等 示例:

var t1:TextField = new TextField();
addChild(t1);
t1.text = getDifferentLetters().toString();
t1.x = 100;
t1.y = 100;

var t2:TextField = new TextField();
addChild(t2);
t2.text = getDifferentLetters().toString();
t2.x = 100;
t2.y = 150;

var t3:TextField = new TextField();
addChild(t3);
t3.text = getDifferentLetters().toString();
t3.x = 100;
t3.y = 200;

如果您对变量T1有引用,这应该有效。 在您的代码中,尝试使用“Lowercase”作为变量和方法。 对于类的第一个字母,“大写”,如果使用常量,则全部以“大写”。

如果您只在数组中使用字符串,请使用Vector。&lt; String&gt;而不是数组!

trace只是一个在输出中得到结果的例子。 最好的祝福。 尼古拉斯。