看板 Flash 關於我們 聯絡資訊
※ 引述《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
evadnia:如果你是有動畫的話,那會比較複雜一點點。 10/05 19:42
evadnia:亂數應該寫成 Math.Floor ... 10/05 19:45
Parati:感謝eva大~我先研究一下~真的很感謝~ 10/05 19:59