从数组中随机化as3中的按钮

时间:2012-07-15 23:53:46

标签: actionscript-3 flash

我是flash 5.5的新手,我正在尝试为我的小学生建立一个测验。 到目前为止,我已经制作了布局,创建了图像按钮,我习惯于as3来推进测验。

所以我正在寻找的是能够改变图像按钮/答案的能力。以下是我到目前为止的样本。

                          the red ______

apple (button of apple)       boy (button of boy)     pineapple (button with pineapple)

在我的例子中,图片是按钮,正确答案是苹果。经过数小时的谷歌搜索,我试图创建一个数组。这是我的代码,我做错了但我不知道是什么。请帮忙。

请帮忙。

function Main() {

var button:Array = [];
button.push("choice1");
button.push("choice2");
button.push("choice3");
ShuffleArray(button); 
trace(button);

}
function ShuffleArray(button:Array)
{

for (var i:int = button.length-1; i >=0; i--)
{

var randomIndex:int = Math.floor(Math.random()*(i+1));
var itemAtIndex:Object = button[randomIndex]; 
button[randomIndex] = button[i];
button[i] = itemAtIndex;
提前谢谢。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

尝试更像这样的事情:

protected var button:Array=[choice1, choice2, choice3];//note no quotes, puts in the actual objects
function Main() {
   super();
   randomArray=shuffleArray(button);
   var prevX:int = 0;
   var space:int = 10;
   //places the buttons from left to right in the order
   //they were in the random array
   //uses existing y
   for (var i:int=0; i<randomArray.length; i++) {
      var btn:DisplayObject = randomArray[i] as DisplayObject;
      btn.x = prevX;
      prevX = btn.x + btn.width + space;
   }
}

protected function shuffleArray(inArray:Array):Array {
   //create copy of array so as not to alter it
   var tempArray = new Array().concat(inArray);
   //resultarray (we'll be destroying the temp array)
   var resultArray:Array = [];
   while(tempArray.length>0) {
      var index:int = int(Math.random() * tempArray.length);
      //delete object from random location and put it into result array
      resultArray.push(tempArray.splice(index, 1)[0]);
   }
   return resultArray;
}

请注意,这假设您使用的是文档类,并且您的按钮已经位于同一y位置的舞台上。