[教程]詳細步驟教你制作微信小程序倒計時組件

先來看下最終效果:


git源:http://git.oschina.net/dotton/CountDown
分步驟-性子急的朋友,可以直接看最后那段代碼绒窑。
wxml文件放個text
<text>second: {{second}} micro second:{{micro_second}}</text>

在js文件中調(diào)用
function countdown(that) { var second = that.data.second if (second == 0) { // console.log("Time Out..."); that.setData({ second: "Time Out..." }); return ; } var time = setTimeout(function(){ that.setData({ second: second - 1 }); countdown(that); } ,1000)}Page({ data: { second: 3 }, onLoad: function() { countdown(this); }});

運行驗證下眉睹,從10走到1s算利,然后顯示時間到爬泥。
于是繼續(xù)將毫秒完善,注意毫秒的步長受限于系統(tǒng)的時間頻率,于是我們精確到0.01s即10ms
js
/* 秒級倒計時 /function countdown(that) { var second = that.data.second if (second == 0) { that.setData({ second: "Time out!", micro_second: "micro_second too." }); clearTimeout(micro_timer); return ; } var timer = setTimeout(function(){ that.setData({ second: second - 1 }); countdown(that); } ,1000)}/ 毫秒級倒計時 */// 初始毫秒數(shù)芬失,同時用作歸零var micro_second_init = 100;// 當前毫秒數(shù)var micro_second_current = micro_second_init;// 毫秒計時器var micro_timer;function countdown4micro(that) { if (micro_second_current <= 0) { micro_second_current = micro_second_init; } micro_timer = setTimeout(function(){ that.setData({ micro_second: micro_second_current - 1 }); micro_second_current--; countdown4micro(that); } ,10)}Page({ data: { second: 2, micro_second: micro_second_init }, onLoad: function() { countdown(this); countdown4micro(this); }});

wxml文件
<text style="display: block;">second: {{second}}s</text><text>{{micro_second}}</text>

如此,當秒級運行完畢時匾灶,毫秒級timer即clearTimeout棱烂,并將字本顯示為'micro_second too'
再添加一個countdown4micro方法,使得顯示剩余 0:3:19 89這樣形式的倒數(shù)
function dateformat(second) { var dateStr = ""; var hr = Math.floor(second / 3600); var min = Math.floor((second - hr * 3600) / 60); var sec = (second - hr * 3600 - min * 60);// equal to => var sec = second % 60; dateStr = hr + ":" + min + ":" + sec; return dateStr;}

目前有2個時鐘粘昨,影響性能垢啼,合并下去掉countdown,于是countdown4micro變成以下的樣子:
function countdown4micro(that) { var loop_second = Math.floor(loop_index / 100); // 得知經(jīng)歷了1s if (cost_micro_second != loop_second) { // 賦予新值 cost_micro_second = loop_second; // 總秒數(shù)減1 total_second--; } // 每隔一秒张肾,顯示值減1; 渲染倒計時時鐘 that.setData({ clock:dateformat(total_second - 1) }); if (total_second == 0) { that.setData({ // micro_second: "", clock:"時間到" }); clearTimeout(micro_timer); return ; } if (micro_second_current <= 0) { micro_second_current = micro_second_init; } micro_timer = setTimeout(function(){ that.setData({ micro_second: micro_second_current - 1 }); micro_second_current--; // 放在最后++芭析,不然時鐘停止時還有10毫秒剩余 loop_index ++; countdown4micro(that); } ,10)}

如此這般,毫秒與時分秒是分別運行渲染的吞瞪,再次改造馁启,程序可讀性更好。dateformat針對于毫秒操作芍秆,而不接受秒為數(shù)惯疙。同時還省卻了計算100次為1s的運算
/** * 需要一個目標日期,初始化時妖啥,先得出到當前時間還有剩余多少秒 * 1.將秒數(shù)換成格式化輸出為XX天XX小時XX分鐘XX秒 XX * 2.提供一個時鐘霉颠,每10ms運行一次,渲染時鐘,再總ms數(shù)自減10 * 3.剩余的秒次為零時,return焦履,給出tips提示說个束,已經(jīng)截止 /// 定義一個總毫秒數(shù)伴栓,以一分鐘為例。TODO,傳入一個時間點,轉(zhuǎn)換成總毫秒數(shù)var total_micro_second = 2 * 1000;/ 毫秒級倒計時 */function countdown(that) { // 渲染倒計時時鐘 that.setData({ clock:dateformat(total_micro_second) }); if (total_micro_second <= 0) { that.setData({ clock:"已經(jīng)截止" }); // timeout則跳出遞歸 return ; } setTimeout(function(){ // 放在最后-- total_micro_second -= 10; countdown(that); } ,10)}// 時間格式化輸出苍糠,如3:25:19 86。每10ms都會調(diào)用一次function dateformat(micro_second) { // 秒數(shù) var second = Math.floor(micro_second / 1000); // 小時位 var hr = Math.floor(second / 3600); // 分鐘位 var min = Math.floor((second - hr * 3600) / 60); // 秒位 var sec = (second - hr * 3600 - min * 60);// equal to => var sec = second % 60; // 毫秒位啤誊,保留2位 var micro_sec = Math.floor((micro_second % 1000) / 10); return hr + ":" + min + ":" + sec + " " + micro_sec;}Page({ data: { clock: '' }, onLoad: function() { countdown(this); }});

經(jīng)過如上優(yōu)化岳瞭,代碼量減少一半,運行效率也高了蚊锹。
Hello小程序將與您共同成長寝优。微信號:130870319 QQ群:40726600

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市枫耳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孟抗,老刑警劉巖迁杨,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钻心,死亡現(xiàn)場離奇詭異,居然都是意外死亡铅协,警方通過查閱死者的電腦和手機捷沸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狐史,“玉大人痒给,你說我怎么就攤上這事】ト” “怎么了苍柏?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長姜贡。 經(jīng)常有香客問我试吁,道長,這世上最難降的妖魔是什么楼咳? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任熄捍,我火速辦了婚禮,結果婚禮上母怜,老公的妹妹穿的比我還像新娘余耽。我一直安慰自己,他們只是感情好苹熏,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布碟贾。 她就那樣靜靜地躺著,像睡著了一般柜裸。 火紅的嫁衣襯著肌膚如雪缕陕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天疙挺,我揣著相機與錄音扛邑,去河邊找鬼。 笑死铐然,一個胖子當著我的面吹牛蔬崩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搀暑,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼沥阳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了自点?” 一聲冷哼從身側(cè)響起桐罕,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后功炮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溅潜,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年薪伏,在試婚紗的時候發(fā)現(xiàn)自己被綠了滚澜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫁怀,死狀恐怖设捐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塘淑,我是刑警寧澤萝招,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站朴爬,受9級特大地震影響即寒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜召噩,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一母赵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧具滴,春花似錦凹嘲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疲恢,卻和暖如春凶朗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背显拳。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工棚愤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杂数。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓宛畦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親揍移。 傳聞我的和親對象是個殘疾皇子次和,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 今天給大家?guī)砦⑿判〕绦虻褂嫊r組件具體開發(fā)步驟: 先來看下最終效果: 源碼:http://download.csd...
    未央大佬閱讀 2,951評論 0 1
  • 轉(zhuǎn)載請注明出處, 謝謝! (~ o ~)Y 1月9日,也就是今天那伐,微信推出的“小程序”正式上線踏施∈幔“小程序”是一種無...
    Jimmy_P閱讀 14,381評論 52 273
  • 這天言曉上完了課,從武術館回家的路上遇見了一位小偷正在偷一位男子的錢包畅形,言曉是練武出身的抓督,雖然沒有很厲害,但...
    老藤樹閱讀 353評論 0 1
  • Git 使用 https://www.git-scm.com/book/zh/v2
    sanfen閱讀 204評論 0 0
  • 活了十九年還是看不懂這座城市 每天來來往往許多車輛 看著行走在大街小巷的人們 他們好像都有許多心事 徐州這幾年變化...
    J1N_x閱讀 164評論 0 0