在好例子网,分享、交流、成长!
您当前所在位置:首页js 开发实例常用JavaScript方法 → 微信小程序实现自定义钟表画面

微信小程序实现自定义钟表画面

常用JavaScript方法

下载此实例
  • 开发语言:js
  • 实例大小:5.29KB
  • 下载次数:9
  • 浏览次数:70
  • 发布时间:2022-11-10
  • 实例类别:常用JavaScript方法
  • 发 布 人:冷的哆嗦
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 微信小程序、钟表

实例介绍

【实例简介】微信小程序实现自定义钟表画面

【实例截图】

from clipboard

//index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 自定义函数--绘制时钟
   */
  drawClock: function() {
    /* 1.准备工作 */
    // 获取画布上下文
    var ctx = this.ctx
    // 定义时钟的宽和高
    let width = 300,
      height = 300

    // 设置画布中心为参照点
    ctx.translate(width / 2, height / 2)

    // 将画布逆时针旋转90度
    ctx.rotate(-Math.PI / 2)

    /*2.绘制时钟刻度 */
    /*2-1. 绘制小时刻度(12个)*/
    // 设置线条的粗细
    ctx.lineWidth = 6
    // 设置线条末端样式
    ctx.lineCap = 'round'

    for (let i = 0; i < 12; i {
      // 开始路径
      ctx.beginPath()
      // 从(100,0)绘制到(120,0)
      ctx.moveTo(100, 0)
      ctx.lineTo(120, 0)
      // 描边路径
      ctx.stroke()

      // 顺时针旋转30°
      ctx.rotate(Math.PI / 6)
    }

    /*2-2. 绘制分钟刻度(60个)*/
    // 设置线条的粗细
    ctx.lineWidth = 5
    // 设置线条末端样式
    ctx.lineCap = 'round'

    for (let i = 0; i < 60; i {
      // 开始路径
      ctx.beginPath()
      // 从(118,0)绘制到(120,0)
      ctx.moveTo(118, 0)
      ctx.lineTo(120, 0)
      // 描边路径
      ctx.stroke()

      // 顺时针旋转6°
      ctx.rotate(Math.PI / 30)
    }

    /* 3.获取当前时间*/
    let time = this.getTime() //获取当前时间
    let h = time[0//小时
    let m = time[1//分钟
    let s = time[2//秒

    /* 4.绘制时钟指针*/
    /* 4-1.绘制时针*/
    // 保存当前的绘图状态
    ctx.save()

    // 旋转角度
    ctx.rotate(h * Math.PI / 6   m * Math.PI / 360   s * Math.PI / 21600)

    // 设置线条的粗细
    ctx.lineWidth = 12

    // 开始绘制路径
    ctx.beginPath()
    // 从(-20,0)绘制到(80,0)
    ctx.moveTo(-20, 0)
    ctx.lineTo(80, 0)
    // 描边路径
    ctx.stroke()

    // 恢复之前保存的绘图样式
    ctx.restore()

    /* 4-2.绘制分针*/
    // 保存当前的绘图状态
    ctx.save()

    // 旋转角度
    ctx.rotate(m * Math.PI / 30   s * Math.PI / 1800)

    // 设置线条的粗细
    ctx.lineWidth = 8

    // 开始绘制路径
    ctx.beginPath()
    // 从(-20,0)绘制到(112,0)
    ctx.moveTo(-20, 0)
    ctx.lineTo(112, 0)
    // 描边路径
    ctx.stroke()

    // 恢复之前保存的绘图样式
    ctx.restore()

    /* 4-3.绘制秒针*/
    // 保存当前的绘图状态
    ctx.save()

    // 旋转角度
    ctx.rotate(s * Math.PI / 30)

    // 设置画笔描边颜色为红色
    ctx.strokeStyle = 'red'
    // ctx.setStrokeStyle('red')

    // 设置线条的粗细
    ctx.lineWidth = 6

    // 开始绘制路径
    ctx.beginPath()
    // 从(-30,0)绘制到(120,0)
    ctx.moveTo(-30, 0)
    ctx.lineTo(120, 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() //秒

    // 24小时换算为12小时制
    if (time[0> 12time[0-= 12

    return time

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    // 创建画布上下文
    this.ctx = wx.createCanvasContext("clockCanvas")

    // 绘制时钟
    this.drawClock()

    var that = this

    // 每秒更新画面
    this.interval = setInterval(function(){
      // 绘制时钟
      that.drawClock()
    },1000)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {
    // 清除计时器
    clearInterval(this.interval)
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  }
})

【核心代码】

.
├── 第11章_界面API·手绘时钟
│   └── clockDemo
│       ├── app.js
│       ├── app.json
│       ├── app.wxss
│       ├── pages
│       │   └── index
│       │       ├── index.js
│       │       ├── index.json
│       │       ├── index.wxml
│       │       └── index.wxss
│       ├── project.config.json
│       ├── project.private.config.json
│       └── sitemap.json
└── 微信小程序实现自定义钟表画面_界面API·手绘时钟.rar

4 directories, 11 files


实例下载地址

微信小程序实现自定义钟表画面

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警