AS3 - 从7中随机抽取5帧

时间:2015-01-25 00:02:15

标签: actionscript-3

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

}

}

1 个答案:

答案 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