Re: [問題] 顯示亂數的過程

看板Flash作者 (Evadne)時間17年前 (2008/10/05 19:39), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Parati (好。難。過)》之銘言: : 想請問一下各位高手 : 做了一個骰子的MC : 有6個影格 分別是1~6點 : 又做了一個按鈕 : 要怎麼每按一次按鈕 : 會先顯示亂數跑的過程 : 跑完才出現點數 : 又是很笨的問題 請教大家 : 非常感謝~問到會自D~ 先假設你的東西結構是這樣: root +- action_button 按下去就觸發一系列動作 +- dice_animation_mc 裡面有六格 那麼我們要先確保 dice_animation_mc 不會亂跑,所以那裡面六個影格都要加 stop(); 重頭戲都在 action_button 觸發的那個事件上!它應該做的事情是: a. 決定骰子目標點數, Math.Randon & Math.Round b. 讓骰子先亂跑一陣子( ? ms ) setInterval & clearInterval c. ?ms 之後讓骰子回歸正道顯示正確數字 Timer object 我們可以發現,其中有一個部份較為麻煩(b部份),所以需要寫個幫手程式。 我會這樣做,寫在下面。程式沒有除錯不知道會不會有根本不能動的地方 XD 不過大致上應該都有寫到啦。請參考看看。 var diceDestination:Number = new Number(1); var diceIllusionDuration:Number = new Number(2000); var diceIllusionInterval:Number = new Number(20); var diceIllusionInt:uint = new uint(0); function actionDice():void{ // A. DETERMINE DICE DESTINATION diceDestination = Math.Round(6 * Math.Random); // B. CREATE FAKE ANIMATION INTERVALS diceIllusionInt = createInterval(actionDiceHelper, diceIllusionInterval); // C. CREATE FINAL PATHWAY TO DICE var diceTimer:Timer = new Timer(diceIllusionDuration, 1); with(diceTimer){ addListener("timer", diceTimerHandler); start(); } } function diceTimerHandler(event:TimerEvent):void{ // A. STOP FURTHER MANIPULATION OF DICE clearInterval(diceIllusionInt); // B. SHOW THE "CORRECT" DESTINATION NUMBER this.dice_animation_mc.gotoAndStop(diceDestination); } function actionDiceHelper():void{ // GET A RANDOM NUMBER var rand = Math.Round(Math.Random() * 6); // SHOW A RANDOM DICE NUMBER this.dice_animation_mc.gotoAndStop(rand) /* or with(this.dice_animation_mc) gotoAndStop(Math.Round(Math.Random() * 6)); */ } 以上有錯請指正,謝謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.84.120

10/05 19:42, , 1F
如果你是有動畫的話,那會比較複雜一點點。
10/05 19:42, 1F

10/05 19:45, , 2F
亂數應該寫成 Math.Floor ...
10/05 19:45, 2F

10/05 19:59, , 3F
感謝eva大~我先研究一下~真的很感謝~
10/05 19:59, 3F
文章代碼(AID): #18wAU93w (Flash)
討論串 (同標題文章)
文章代碼(AID): #18wAU93w (Flash)