Actionscript 3 AS3-随机选择7帧中的5帧

Actionscript 3 AS3-随机选择7帧中的5帧,actionscript-3,Actionscript 3,您好,非常感谢您抽出时间。 我正试图为我的学生们做一个测验,开始按钮将变成随机的7帧。然后在落地框上,出现问题,通过单选按钮选择答案,然后通过另一个按钮提交到下一个随机问题。这需要发生5次,以便从7个问题中随机选择5个问题,并且不重复前面的任何问题。如果有人能给我指出正确的方向,我将不胜感激 //Start Button - AS3 Frame #8157 startBtn.addEventListener(MouseEvent.CLICK, startQuiz); fu

您好,非常感谢您抽出时间。 我正试图为我的学生们做一个测验,开始按钮将变成随机的7帧。然后在落地框上,出现问题,通过单选按钮选择答案,然后通过另一个按钮提交到下一个随机问题。这需要发生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);

}

}
//开始按钮-AS3帧#8157
startBtn.addEventListener(MouseEvent.CLICK,startQuiz);
函数startQuiz(事件:MouseEvent):void{
}
//带有分数计数的提交按钮-AS3帧#8158
变量计数:数值=0;
var mygroup1:RadioButtonGroup=新的RadioButtonGroup(“group1”);
q1a1.group=q1a2.group=q1a3.group=q1a4.group=q1a5.group=mygroup1;
b1.addEventListener(MouseEvent.CLICK,quizHandler1)
函数quizHandler1(事件:MouseEvent):void{
if(mygroup1.selection.label==“B)12”){
计数=计数+20;
scoresult.text=(count.toString();
变量编号_数组:数组=[81588159816081616816281638164];
var final_数组:数组=[];
选择的var计数:int=5;
变量i:int;
对于(i=0;i
因为不想重复相同的值,所以需要知道已经使用了哪些值。有很多方法可以做到这一点,但最直接的方法可能是将所有值放在一个数组中,然后删除一个随机值,直到数组为空。下面是一个例子:

// 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()

的文档,请看一下Math.random()谢谢Aaron。看来你给我指明了正确的方向。我使用了上面的代码,它似乎在工作。它从7个随机数中选择5个,它们是不重复的。请查看编辑后的版本。现在,剩下的唯一一件事是,我如何捕获生成的5个数字,以便将它们分配给要遵循的提交按钮(b1)?我在数组方法之前使用了gotoAndStop(Math.floor(Math.random)),但它会给出重复的数字。但是当我使用数组时,我很难找到在goto语句或类似语句中使用生成的数字的方法。谢谢。我不确定我是否理解。我没有看到
gotoAndStop()
任意操作。由于您的
final\u数组
包含帧编号,您可以直接将它们传递给
gotoAndStop()
。例如,如果您想转到推入
final\u数组的最后一帧
,只需执行
gotoAndStop(final\u数组[final\u array.length-1])
Hey Aaron.我不得不打开另一个话题,因为新出现的难题超出了最初问题的目的。如果您感兴趣,这里是链接。