查看完整版本: flash as3.0隨機語法問題
頁: [1]

iog0826 發表於 2010-8-18 04:44 AM

flash as3.0隨機語法問題

我做了一個類似像抽籤的檔案,共有2個場景,第一場景按下按鈕後開始play,到最後
影格時會自動跳至第2場景的隨機影格並停止『第2場景共50個影格』,同時也會從元件庫複製一個按鈕至影格,此按鈕可跳至第一場景重頭play,這樣就可以一直抽籤,但不知是不是我錯覺,覺得隨機影格比較偏向25影格之後的,請教各位怎麼寫語法才是最隨機又平均的?
如果不想讓隨機已出現的影格再重複出現要怎麼寫?
我隨機語法是這樣寫得:『addChild(s);是我複製的可跳至第一場景重頭play的按鈕』

var a = Math.floor(Math.random()*50);
switch (a){
case 0:
gotoAndStop(1,"02");
addChild(s);
s.x=505;
s.y=505;
break;
case 1:
gotoAndStop(2,"02");
addChild(s);
s.x=505;
s.y=505;
break;
........................共有50個,以下省略
不知道這樣寫對嗎?...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

cain 發表於 2010-8-19 10:40 AM

本帖最後由 cain 於 2010-8-19 10:43 AM 編輯

機率是亂數 你的感覺是錯覺
這行 var a = Math.floor(Math.random()*50);  
改 var a:int = int(Math.random()*50);
效能會比較好 Math class很耗cpu 能自己寫就話就少用..
另外 s.x = 505 看要不要拉出 判斷式外面 程式會少很多反正位置都一樣 不然以後改位置很麻煩
s.y 可以用 亂數 x 某個值 + 固定值 這樣你的程式不會超過10行...

iog0826 發表於 2010-8-19 05:36 PM

機率是亂數 你的感覺是錯覺
這行 var a = Math.floor(Math.random()*50);  
改 var a:int = int(Math.ra ...
cain 發表於 2010-8-19 10:40 AM http://www.eyny.com/images/common/back.gif


我也覺得蠻長的,我把他改成下面這樣就短多了
do {
var a:int = int(Math.random()*51);
}
while( a == 0 );

var s:MovieClip=new gho();

gotoAndStop(a,"02");
addChild(s);
s.x=505;
s.y=505;

想請問一下,已出現的影格要怎麼寫才能讓他不重複出現...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

cain 發表於 2010-8-20 09:21 AM

不瞭解您的意思..   已出現的影格?

iog0826 發表於 2010-8-20 10:33 PM

不瞭解您的意思..   已出現的影格?
cain 發表於 2010-8-20 09:21 AM http://www.eyny.com/images/common/back.gif


    謝謝~我已經解決了~感謝<br><br><br><br><br><div></div>

vinaqc 發表於 2010-9-4 04:44 AM

2到50應該是Math.floor(Math.random()*49)+2才對

jeaby 發表於 2011-8-23 09:07 PM

學的了隨機數字的精華!!
謝謝樓上幾位大大的教學

aa11bb220 發表於 2012-5-29 06:18 PM

我都不懂.................
還蠻想學

create229 發表於 2012-7-1 09:50 AM

太感謝兩位的討論 讓小弟茅塞頓開~~~
頁: [1]