AS3 - 转到 7 帧中的随机 5 帧

AS3 - Go to random 5 frames out of 7

您好,非常感谢您抽出宝贵时间。 我正在尝试为我的学生构建一个测验,其中开始按钮将转到 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);

}

}

由于您不想重复相同的值,因此您需要知道您已经使用了哪些值。有很多方法可以做到这一点,但最直接的可能是将所有值放入一个数组中,然后删除一个随机值,直到数组为空。这是一个例子:

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