微信小程序入門之繪制時鐘
更新時間:2020年10月22日 15:29:57 作者:yunfeather
這篇文章主要為大家詳細介紹了微信小程序入門之繪制時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
微信小程序入門案例——繪制時鐘,供大家參考,具體內(nèi)容如下
涉及內(nèi)容:canvas、每秒刷新頁面、繪制
目錄結(jié)構(gòu):
pages\index\index.js
Page({ /** * 頁面的初始數(shù)據(jù) */ data: { }, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: function (options) { this.ctx = wx.createCanvasContext('clockCanvas') this.drawClock() var that = this this.interval=setInterval(function(){ that.drawClock() },1000) }, /** * 繪制時鐘 */ drawClock:function(){ /** * 準備工作 */ let width = 300,height=300 var ctx= this.ctx ctx.translate(width/2,height/2) ctx.rotate(-Math.PI/2) /** * 繪制時鐘刻度 */ ctx.lineWidth=6 ctx.lineCap='round' for(let i=0;i<12;i++){ ctx.beginPath() ctx.moveTo(80,0) ctx.lineTo(100,0) ctx.stroke() ctx.rotate(Math.PI/6) } ctx.lineWidth=5 ctx.lineCap='round' for(let i = 0;i<60;i++){ ctx.beginPath() ctx.moveTo(88,0) ctx.lineTo(100,0) ctx.stroke() ctx.rotate(Math.PI/30) } /** * 獲取按當前時間 */ let time = this.getTime() let h = time[0] let m = time[1] let s = time[2] /** * 繪制時鐘指針 */ ctx.save() ctx.rotate(h * Math.PI/6 + m * Math.PI/360 + s * Math.PI/21600) ctx.lineWidth=12 ctx.beginPath() ctx.moveTo(-20,0) ctx.lineTo(60,0) ctx.stroke() ctx.restore() /** * 繪制時鐘分針 */ ctx.save() ctx.rotate(m * Math.PI/30 + s * Math.PI/1800) ctx.lineWidth=8 ctx.beginPath() ctx.moveTo(-20,0) ctx.lineTo(82,0) ctx.stroke() ctx.restore() /** * 繪制時鐘妙針 */ ctx.save() ctx.rotate(s*Math.PI/30) ctx.strokeStyle = 'red' ctx.lineWidth = 6 ctx.beginPath() ctx.moveTo(-30,0) ctx.lineTo(90,0) ctx.stroke() ctx.fillStyle='red' ctx.beginPath() ctx.arc(0,0,10,0,Math.PI*2,true) ctx.fill() ctx.restore() /** * 繪制 */ ctx.draw() /** * 更新頁面顯示時間 */ this.setData({ h:h>9?h:'0'+h, m:m>9?m:'0'+m, s:s>9?s:'0'+s }) }, getTime:function(){ let now = new Date() let time=[] time[0]=now.getHours() time[1]=now.getMinutes() time[2]=now.getSeconds() if(time[0]>12){ time[0]-=12 } return time }, /** * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成 */ onReady: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面顯示 */ onShow: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面隱藏 */ onHide: function () { }, /** * 生命周期函數(shù)--監(jiān)聽頁面卸載 */ onUnload: function () { clearInterval(this.interval) }, /** * 頁面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動作 */ onPullDownRefresh: function () { }, /** * 頁面上拉觸底事件的處理函數(shù) */ onReachBottom: function () { }, /** * 用戶點擊右上角分享 */ onShareAppMessage: function () { } })
pages\index\index.wxml
<view class="container"> <text>My Clock</text> <canvas canvas-id="clockCanvas"></canvas> <text>{{h}}:{{m}}:{{s}}</text> </view>
pages\index\index.wxss
.container{ height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: space-around; } text{ font-size: 40pt; font-weight: bold; } canvas{ width: 600rpx; height: 600rpx; }
app.js
App({ /** * 當小程序初始化完成時,會觸發(fā) onLaunch(全局只觸發(fā)一次) */ onLaunch: function () { }, /** * 當小程序啟動,或從后臺進入前臺顯示,會觸發(fā) onShow */ onShow: function (options) { }, /** * 當小程序從前臺進入后臺,會觸發(fā) onHide */ onHide: function () { }, /** * 當小程序發(fā)生腳本錯誤,或者 api 調(diào)用失敗時,會觸發(fā) onError 并帶上錯誤信息 */ onError: function (msg) { } })
app.json
{ "pages":[ "pages/index/index" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "我的時鐘", "navigationBarTextStyle":"black" }, "style": "v2", "sitemapLocation": "sitemap.json" }
運行截圖:
為大家推薦現(xiàn)在關(guān)注度比較高的微信小程序教程一篇:《微信小程序開發(fā)教程》小編為大家精心整理的,希望喜歡。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
javascript中innerHTML 獲取或替換html內(nèi)容的實現(xiàn)代碼
這篇文章主要介紹了javascript中innerHTML 獲取或替換html內(nèi)容,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03