您好,非常感谢您的时间。 我正在尝试为我的学生建立一个测验,其中开始按钮将从7开始随机框架。然后在着陆框架上,出现问题,然后通过radiobutton选择答案,然后通过另一个按钮提交答案。下一个随机问题。这需要发生5次,因此它将从7中随机挑选5个问题而不重复任何先前的问题。如果有人能指出我正确的方向,那将非常感激。
//Start Button - AS3 Frame #8157
startBtn.addEventListener(MouseEvent.CLICK, startQuiz);
function startQuiz(event:MouseEvent):void{
}
//Submit Button with score count - AS3 Frame #8158
var count:Number = 0;
var mygroup1:RadioButtonGroup = new RadioButtonGroup("group1");
q1a1.group = q1a2.group = q1a3.group = q1a4.group = q1a5.group = mygroup1;
b1.addEventListener(MouseEvent.CLICK, quizHandler1)
function quizHandler1(event:MouseEvent):void{
if(mygroup1.selection.label=="B) 12") {
count = count + 20;
scoreresult.text = (count).toString();
var number_array:Array = [8158,8159,8160,8161,8162,8163,8164 ];
var final_array:Array = [];
var count_selected:int = 5;
var i:int;
for(i = 0; i < count_selected; i++)
{
if(number_array.length == 0)
break;
else
final_array.push(number_array.splice(Math.floor(Math.random() * number_array.length), 1)[0]);
}
trace(final_array);
}
}
答案 0 :(得分:0)
由于您不想重复相同的值,因此您需要知道已使用的值。有很多方法可以做到这一点,但最直接的可能是将所有值放在一个数组中,然后删除一个随机值,直到数组为空。这是一个例子:
// create an array with all the frames you want to visit
var frames:Array = [0, 1, 2, 3, 4, 5, 6];
// when you want to pick one randomly, remove it using splice
var frame:int = frames.splice(Math.random() * frames.length, 1)[0];
// when the array is empty, you've visited every frame
if(frames.length == 0)
trace("all done!");
以下是splice()
上的文档:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#splice%28%29