下面的代码执行了我需要做的事情,只是没有连续两次选择随机帧标签。但是,我需要更进一步。现在,我还需要以某种方式编写此代码,即已选择的任何随机帧都将退出数组,并且不会再次被选中。在实现这一目标方面的任何帮助将不胜感激。这是我的代码:
function getRandomLabel(currentLabel: String): String {
var labels: Array = ["e1" , "e2", "e3", "e4", "e5", "e6", "e7", "e8" ];
var currentIndex: int = labels.indexOf(currentLabel);
if (currentIndex > -1)
labels.splice(currentIndex, 1);
var index: Number = Math.floor(Math.random() * labels.length);
return labels[index];
}
答案 0 :(得分:1)
非常容易。您需要的是将标签保留在函数之外(在您的代码中,它是一个函数局部变量,并且在每次调用时都会重新填充它),并根据请求提取每个变量,以便下次不在列表中。
var labels:Array = ["e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8"];
function getRandomLabel():String
{
var anIndex:int = Math.random() * labels.length;
var result:String = labels[anIndex];
labels.splice(anIndex, 1);
return result;
}