Re: [問題] 顯示亂數的過程
※ 引述《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
10/05 19:45, 2F
推
10/05 19:59, , 3F
10/05 19:59, 3F
討論串 (同標題文章)