0

我是刷 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;

提前致谢。

提前致谢。

4

1 回答 1

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 位置。

于 2012-07-16T00:42:18.370 回答