同志們好,今天咱們來談?wù)勀矲LASH抽獎(jiǎng)程序中的細(xì)節(jié)問題。首先聲明一下,本文不是一篇真正意義上的教程,我只是想討論下咱們?cè)谥谱鲬?yīng)用程序時(shí),應(yīng)該要關(guān)注的細(xì)節(jié)問題,以帶給用戶更好的體驗(yàn)。
好的,進(jìn)入正題,F(xiàn)在我們有一個(gè)需求,制作一個(gè)轉(zhuǎn)盤抽獎(jiǎng)的應(yīng)用,這有點(diǎn)類似咱們小時(shí)候玩過的轉(zhuǎn)糖——現(xiàn)在在瓷器口也有——來看看設(shè)計(jì)圖:
怎么樣,很像吧?還記得小時(shí)候轉(zhuǎn)糖,總是難以轉(zhuǎn)到龍啊鳳啊之類的大獎(jiǎng),所以難免懷疑老板做了什么手腳,現(xiàn)在想想那也是合理的,不然大家總是轉(zhuǎn)到大獎(jiǎng),那老板早虧本不干了。我們這個(gè)程序也一樣,抽到大獎(jiǎng)是有一定幾率的,當(dāng)然這個(gè)幾率是由后臺(tái)來控制,F(xiàn)LASH本身只是把結(jié)果體現(xiàn)出來。俗話說無圖無真相,讓我們來瞧瞧具體的流程是怎么回事:
可以看出,頁(yè)面在flash和后臺(tái)之間充當(dāng)了一個(gè)中轉(zhuǎn)站的作用,當(dāng)然這不是本文要討論的重點(diǎn),F(xiàn)在讓我們回到前端,回到FLASH上面來,看看由FLASH自己來決定抽獎(jiǎng)結(jié)果和讓后臺(tái)決定抽獎(jiǎng)結(jié)果之間有什么區(qū)別。
先來看看前者,由FLASH制造一個(gè)完全公平的隨機(jī)結(jié)果(很可惜Party不會(huì)讓我這么干的)。我們現(xiàn)在有幾個(gè)獎(jiǎng)項(xiàng),分別是OO、XX、OOX以及XXO等等,當(dāng)我們?cè)邳c(diǎn)擊開始抽獎(jiǎng)按鈕的時(shí)候,我們給指針指定一個(gè)初始速度,讓指針開始旋轉(zhuǎn)并做減速運(yùn)動(dòng),當(dāng)指針的速度減為0,指針停止旋轉(zhuǎn),看看它指向的是哪個(gè)獎(jiǎng)項(xiàng),然后把結(jié)果在FLASH中展示并發(fā)送給后臺(tái)。由于初始速度是在每次點(diǎn)擊后我們通過隨機(jī)函數(shù)模擬出來的一個(gè)隨機(jī)值,所以每次轉(zhuǎn)動(dòng)的初速度都是不同的,指針停下來的位置也就變成不確定的了,這樣就實(shí)現(xiàn)了隨機(jī)獲獎(jiǎng)的效果。現(xiàn)在注意一個(gè)細(xì)節(jié),因?yàn)樵谶@個(gè)設(shè)計(jì)中,用戶對(duì)指針的控制只有一個(gè)點(diǎn)擊按鈕的操作,而無法控制旋轉(zhuǎn)的力度(這倒是一個(gè)不錯(cuò)的想法,如果這是一個(gè)小游戲的話),所以我們可以讓指針盡量旋轉(zhuǎn)多一點(diǎn),不要出現(xiàn)用戶點(diǎn)擊之后由于初速度太小而導(dǎo)致指針只發(fā)生少量偏移(或者初速度太大指針旋轉(zhuǎn)很久才停下來)的情況。那么我們需要給隨機(jī)函數(shù)指定一個(gè)范圍,以限制初始速度使其不要太大也不要太小。這個(gè)函數(shù)總是在許多地方很管用(同樣你可以用來設(shè)置指針做減速運(yùn)動(dòng)時(shí)的加速度),我們把它寫出來:
//該函數(shù)返回一個(gè)介于minNum和maxNum之間的整數(shù),比如randRange (1 ,10)就是取1-10(包括1和10)之間的所有整數(shù)。 function randRange(minNum:Number,maxNum:Number):Number { return Math.round(Math.random( ) * (maxNum-minNum) + minNum); }
我們來個(gè)小demo瞧瞧:
我為這個(gè)demo寫了兩個(gè)開始按鈕,前面那個(gè)點(diǎn)擊之后,指針開始旋轉(zhuǎn),此時(shí)還可以繼續(xù)點(diǎn)擊按鈕,這樣會(huì)導(dǎo)致一次抽獎(jiǎng)還未結(jié)束的時(shí)候又開始第二次抽獎(jiǎng),帶來混亂,于是后面那個(gè)按鈕我做了點(diǎn)處理,讓指針在旋轉(zhuǎn)的時(shí)候按鈕變得不可點(diǎn)擊,這也算是一個(gè)小細(xì)節(jié)吧。 至此,如果我們無視掉一些諸如讓指針旋轉(zhuǎn)啊、提交結(jié)果給后臺(tái)啊之類的代碼的話,由FLASH自己來決定結(jié)果這樣一種方式的抽獎(jiǎng)動(dòng)畫就制作完成了(眾人:……)。
附錄:讓用戶自己控制旋轉(zhuǎn)力度來進(jìn)行抽獎(jiǎng)的demo
出處:新媒重慶UED
責(zé)任編輯:bluehearts
上一頁(yè) 下一頁(yè) AS3"抽獎(jiǎng)"之細(xì)節(jié)分析 [2]
◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論
|