[問題] 使用按鈕來產生1~99不重覆亂數
//宣告容器ballArea,將容器加入舞台,並將ball_mc加入容器中
var ballArea:Sprite = new Sprite();
addChild(ballArea);
//New按鈕設定
New_btn.addEventListener(MouseEvent.CLICK,newBtn);
function newBtn(e:MouseEvent) {
//在記憶體中存入ball_mc,將ball的屬性給予ball_mc,並加入舞台
var ball_mc:MovieClip = new ball();
ballArea.addChild(ball_mc);
//設定ball_mc的屬性(座標,亂數)
ball_mc.x=350;
ball_mc.y=75;
// 產生 0 到 (n - 1) 不重複亂數陣列
function genRandomArray(n:int):Array {
var ary:Array=[];
while (n--) {
ary.push(Math.random());
}
return ary.sort(Array.NUMERIC | Array.RETURNINDEXEDARRAY);
}
// 產生 1-99 不重複亂數陣列
var ra:Array=genRandomArray(99);
trace(ra[0]+1);// 取出第一個不重複亂數
ball_mc.txt.text=(ra[0]+1).toString();
//設定可拖曳ball_mc
ball_mc.addEventListener(MouseEvent.MOUSE_DOWN,ballDown);
function ballDown(e:MouseEvent) {
ball_mc.startDrag();
}
ball_mc.addEventListener(MouseEvent.MOUSE_UP,ballUp);
function ballUp(e:MouseEvent) {
ball_mc.stopDrag();
}
}
這段程式碼是在做資料結構的二元樹節點
當按下NEW按鈕會產生1~99隨機亂樹節點
我的問題是這樣的
因為把陣列array寫在new裡面
變成說我每按一次NEW按鈕
array都重新產生一次了(我的認知是這樣)
所以她一樣會跑出重複的數字
我有試過把array寫在按鈕外
可是不知道為甚麼都會錯誤
小弟是初學者,不是很了解array的用法
也用過for迴圈這樣
for (var i:int=0; i<99; i++);
ball_mc.txt.text=(ra[i]).toString();
但也是怪怪的會錯誤,是不是哪邊搞錯了
真的很多疑問
有聽朋友說可以用檢查是否有重複的函數
但朋友忘記函數名稱了
我也找不到
是否有函數,可以檢查有無重複數字出現?
還是有更好的方法
麻煩各位幫忙
感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.138.65
→
04/03 12:19, , 1F
04/03 12:19, 1F
→
04/03 12:20, , 2F
04/03 12:20, 2F
推
04/03 13:12, , 3F
04/03 13:12, 3F
→
04/03 19:27, , 4F
04/03 19:27, 4F
→
04/05 00:56, , 5F
04/05 00:56, 5F
→
04/05 00:56, , 6F
04/05 00:56, 6F
推
04/05 01:11, , 7F
04/05 01:11, 7F
→
04/05 01:13, , 8F
04/05 01:13, 8F
→
04/05 01:13, , 9F
04/05 01:13, 9F
→
04/05 01:25, , 10F
04/05 01:25, 10F
→
04/05 01:25, , 11F
04/05 01:25, 11F
→
04/05 01:26, , 12F
04/05 01:26, 12F
→
04/05 01:26, , 13F
04/05 01:26, 13F
→
04/05 01:30, , 14F
04/05 01:30, 14F
→
04/05 01:31, , 15F
04/05 01:31, 15F
→
04/05 01:31, , 16F
04/05 01:31, 16F
→
04/05 02:44, , 17F
04/05 02:44, 17F
→
04/05 12:20, , 18F
04/05 12:20, 18F
→
04/05 12:21, , 19F
04/05 12:21, 19F
Flash 近期熱門文章
PTT數位生活區 即時熱門文章