欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  互联网

微信小程序入门之绘制时钟

程序员文章站 2022-03-08 10:04:44
微信小程序入门案例——绘制时钟,供大家参考,具体内容如下涉及内容:canvas、每秒刷新页面、绘制目录结构:pages\index\index.jspage({ /** * 页面的初始数据 */ d...

微信小程序入门案例——绘制时钟,供大家参考,具体内容如下

涉及内容:canvas、每秒刷新页面、绘制

目录结构:

微信小程序入门之绘制时钟

pages\index\index.js

page({
 
 /**
 * 页面的初始数据
 */
 data: {
 
 },
 
 /**
 * 生命周期函数--监听页面加载
 */
 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
 },
 
 /**
 * 生命周期函数--监听页面初次渲染完成
 */
 onready: function () {
 
 },
 
 /**
 * 生命周期函数--监听页面显示
 */
 onshow: function () {
 
 },
 
 /**
 * 生命周期函数--监听页面隐藏
 */
 onhide: function () {
 
 },
 
 /**
 * 生命周期函数--监听页面卸载
 */
 onunload: function () {
 clearinterval(this.interval)
 },
 
 /**
 * 页面相关事件处理函数--监听用户下拉动作
 */
 onpulldownrefresh: function () {
 
 },
 
 /**
 * 页面上拉触底事件的处理函数
 */
 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({
 
 /**
 * 当小程序初始化完成时,会触发 onlaunch(全局只触发一次)
 */
 onlaunch: function () {
 
 },
 
 /**
 * 当小程序启动,或从后台进入前台显示,会触发 onshow
 */
 onshow: function (options) {
 
 },
 
 /**
 * 当小程序从前台进入后台,会触发 onhide
 */
 onhide: function () {
 
 },
 
 /**
 * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onerror 并带上错误信息
 */
 onerror: function (msg) {
 
 }
}) 

app.json

{
 "pages":[
 "pages/index/index"
 ],
 "window":{
 "backgroundtextstyle":"light",
 "navigationbarbackgroundcolor": "#fff",
 "navigationbartitletext": "我的时钟",
 "navigationbartextstyle":"black"
 },
 "style": "v2",
 "sitemaplocation": "sitemap.json"
}

运行截图:

微信小程序入门之绘制时钟

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。