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 に答える