2013-03-08 45 views
0

當我啓動我的應用程序時,它會顯示一個帶有開始按鈕的頁面。在閃存中隨機化按鈕位置

單擊它時,會顯示八個按鈕。對於我的應用程序,我希望每次運行它時,按鈕都應該隨機顯示,即它們應該出現在頁面上的不同位置。

任何人都可以請幫忙嗎?

+0

我沒有得到任何邏輯這一點。我首先嚐試通過創建按鈕的實例數組。然後,我將這個數組進行了整理,使它變得隨機。之後,我將它返回到相同的數組名稱。但是,我仍然看不到按鈕改變他們的位置。你能爲此提出任何想法/解決方案嗎? – pravesh 2013-03-08 16:59:41

+0

你應該洗牌按鈕座標,而不是實例處理程序本身:) – Smolniy 2013-03-08 18:55:33

回答

0

你Button1的...按鈕8

var arr:Array = new Array(); 
for (var i:int=1; i<=8; i++) { 
    var btn:Sprite = this["button"+i] as Sprite 
    arr.push({x:btn.x, y:btn.y}) 
} 
suffle arr 
for (i=1; i<=8; i++) { 
    var btn:Sprite = this["button"+i] as Sprite 
    btn.x = arr[i-1].x; 
    btn.y = arr[i-1].y; 
} 
+0

好吧,所以我想我將不得不將按鈕座標存儲在名爲「arr」的數組中。但我如何將x和y座標存儲在單個數組中?或者我是否必須在「arr」中寫入實例,並且他們的位置將被推送?然後,「arr」的洗牌完成......但是,我怎樣才能確保按鈕的新/洗牌coords被用來改變按鈕的位置? – pravesh 2013-03-09 02:06:09

+0

你看到大括號了嗎?這是Object類的實例。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Object.html對象可以將許多變量存儲在一個「容器」中。我們把所有按鈕的座標放在數組中。 X和Y在一起。然後洗牌陣列。現在,在數組[0]中,按鈕5的座標,數組[1]中的座標 - 按鈕3的座標,數組[2]中的按鈕1 - 按鈕1等等。 – Smolniy 2013-03-09 08:58:48

+0

然後我們將button1放入coords array [0](即button5的原始座標)按鈕2到array [0](button3的原始座標)中,等等。想一想,這是一個非常簡單的算法。請記住,數組元素從零開始索引。 – Smolniy 2013-03-09 08:59:27

0

如果您有一個數組的按鈕喲可以這樣做:

for(1=i; i<=button_array.length; i++) { 
    button_array[i].x = Math.random() * WIDTH_AVAILABLE; 
    button_array[i].y = Math.random() * HEIGHT_AVAILABLE; 
} 

您應該調整寬度和高度,所以沒有按按鈕在可用空間之外結束。這也沒有任何重疊檢查。

0
function shuffleButtons(arrayOfButton:Array):void { 
    trace ("input: " + arrayOfButton) 
    for(var i:int=0; i<100; i++) { 
     var btn1:DisplayObject = arrayOfButton[Math.floor(Math.random()*arrayOfButton.length)] as DisplayObject; 
     do { 
      var btn2:DisplayObject = arrayOfButton[Math.floor(Math.random()*arrayOfButton.length)] as DisplayObject; 
     } while (btn1==btn2); 

     var foo:Number; 

     foo = btn1.x; 
     btn1.x = btn2.x; 
     btn2.x = foo; 

     foo = btn1.y; 
     btn1.y = btn2.y; 
     btn2.y = foo; 
    } 
} 

而當你需要suffle設置OV按鈕,呼叫

shuffleButtons([button1, button2, button3, button4, button5, button6 ]);