[問題] do while的問題

看板Flash作者 (大便兔子)時間15年前 (2009/03/30 23:15), 編輯推噓10(10015)
留言25則, 3人參與, 最新討論串1/3 (看更多)
下面這段程式, 我希望複製出busno個bus, 前grannyno個把對應的"granny"+i蓋住, 已確定各個granny不會有重疊問題, 希望剩下沒有蓋東西的bus也不要重疊, 但是那個do while有時候會失靈, 囧 有人能幫我看看嗎? for(i=1;i<=busno;i++){ bus.duplicateMovieClip("bus"+i,layer--); _root["bus"+i].v=random(8)+1; if(i<=grannyno){ _root["bus"+i]._x=_root["granny"+i]._x; _root["bus"+i]._y=_root["granny"+i]._y+30;} else{ do{ _root["bus"+i]._x=random(5)*101+80; _root["bus"+i]._y=random(6)*60+48; for(j=1;j<i;j++) f=_root["bus"+i].hitTest(_root["bus"+j]); }while(f==1) } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.161.194.250

03/30 23:28, , 1F
失靈的意思是?另外,寫while(f)就夠了,因為f是布林值
03/30 23:28, 1F

03/30 23:29, , 2F
寫f==1反而會因轉型而浪費"一點點"CPU資源
03/30 23:29, 2F

03/30 23:29, , 3F
↑幾乎沒有,但不必要
03/30 23:29, 3F

03/30 23:32, , 4F
就是當它random出來好幾次都跟別人重疊, 會跑出迴圈...
03/30 23:32, 4F

03/30 23:33, , 5F
你用random,本來就有可能會重疊到吧
03/30 23:33, 5F

03/30 23:33, , 6F
第二個for有沒有少一個"{"啊?另外失靈的意思是啥?(無
03/30 23:33, 6F

03/30 23:33, , 7F
噢,我懂你的意思了,我再看看
03/30 23:33, 7F

03/30 23:34, , 8F
法昭喚大魔神嗎?),覺得第二段用do...while,感覺有點
03/30 23:34, 8F

03/30 23:34, , 9F
浪費的說。
03/30 23:34, 9F

03/30 23:34, , 10F
你的do下一行要重新設定 f = false
03/30 23:34, 10F

03/30 23:34, , 11F
否則f只要偵測到一次重疊,就永遠是true了
03/30 23:34, 11F

03/30 23:37, , 12F
@@~我記得do...while的do是一定會執行,不管while對錯。
03/30 23:37, 12F

03/30 23:47, , 13F
cj大, 試過了還是一樣@@ 剛剛測了一下f的值,
03/30 23:47, 13F

03/30 23:47, , 14F
發現f有時候重疊會顯現false= =!
03/30 23:47, 14F

03/30 23:49, , 15F
ice 不好意思= ="排版有點亂, for我沒有加{}
03/30 23:49, 15F

03/31 00:00, , 16F
那搞不好是連else block都沒有跑進去?
03/31 00:00, 16F

03/31 00:32, , 17F
應該有, i<=grannyno時f都是undefined, 之後f有值
03/31 00:32, 17F

03/31 00:38, , 18F
你的f初值是多少?從0開始嗎?這樣當然會跑兩遍啊!
03/31 00:38, 18F

03/31 13:31, , 19F
ice,他用do..while是要移動物件,直到跟其他東西沒重疊
03/31 13:31, 19F

03/31 13:32, , 20F
雖然用這種方法,非常有可能連續很多次都還會重疊這樣..
03/31 13:32, 20F

03/31 13:54, , 21F
我是看的出來xy一定會跟位移有關,只是他問的問題我實在
03/31 13:54, 21F

03/31 13:56, , 22F
想清楚他所謂的[失靈],是指重疊還是指跑出迴圈?
03/31 13:56, 22F

03/31 14:28, , 23F
他的意思好像是明明hitTest()看起來會回傳true
03/31 14:28, 23F

03/31 14:28, , 24F
但是f卻還是維持false值
03/31 14:28, 24F

03/31 14:31, , 25F
原po乾脆把FLA原始檔po上來好了
03/31 14:31, 25F
※ 編輯: IDontBite 來自: 118.161.191.181 (04/01 12:47)
文章代碼(AID): #19qE8dSm (Flash)
文章代碼(AID): #19qE8dSm (Flash)