微信小程序开发 | API应用案例(下)

news/2024/5/19 1:04:22/文章来源:https://blog.csdn.net/PoGeN1/article/details/130118077

API应用案例(下)

  • 6.1【案例5】模拟时钟
    • 6.1.1 案例分析
    • 6.1.2 前导知识
    • 6.1.3 钟表页面布局
    • 6.1.4 钟表页面绘制
  • 6.2【案例6】罗盘动画
    • 6.2.1 案例分析
    • 6.2.2 前导知识
    • 6.2.3 设计罗盘页面布局
    • 6.2.4 手指触摸旋转罗盘
    • 6.2.5 单击按钮操作罗盘
  • 6.3【案例7】文件上传与下载
    • 6.3.1 案例分析
    • 6.3.2 前导知识
    • 6.3.3 录音和上传
    • 6.3.4 文件的下载
  • 6.4【案例8】在线聊天系统
    • 6.4.1 案例分析
    • 6.4.2 前导知识
    • 6.4.3 编写Node.js服务器端代码
    • 6.4.4 实现通信功能
    • 6.4.5 编写聊天页面
  • 总结

6.1【案例5】模拟时钟

6.1.1 案例分析

模拟时钟任务需求

  • 使用canvas绘制时钟,实现模拟时钟的功能。
  • 钟表时间与系统时间保持一致,刻度将24小时制转化为12小时制。
  • 绘制中心圆
  • 绘制外层大圆
  • 绘制分针、时针、秒针。

页面效果图:
在这里插入图片描述

6.1.2 前导知识

  1. canvas组件(原生组件,默认宽高为300px*225px)
    canvas 常用属性
    在这里插入图片描述
    canvas用法
  • 创建canvas.wxml文件。
    在这里插入图片描述
  • canvas组件默认样式如下。
    在这里插入图片描述

canvas组件默认效果图:
在这里插入图片描述

注意
canvas组件是原生组件,它的层级是最高的,不能通过z-index设置层级,css动画对canvas组件无效。

  1. canvas绘制矩形,演示绘制的基本步骤
    第1步:创建Canvas绘图上下文对象CanvasContext
    在这里插入图片描述
    第2步:使用Canvas绘图上下文进行绘图描述
    在这里插入图片描述
    第3步:画图
    在这里插入图片描述
    矩形效果图:
    在这里插入图片描述
  2. canvas绘制笑脸,示例代码如下:
    第1步:创建Canvas绘图上下文对象CanvasContext
    在这里插入图片描述
    第2步:设置线条颜色和线宽
    在这里插入图片描述
    第3步:移动画笔坐标位置,绘制(外部大圆)
    在这里插入图片描述
    第4步:移动画笔坐标位置,绘制(嘴巴线条)
    在这里插入图片描述
    第5步:移动画笔坐标位置,绘制(左眼圆圈)
    在这里插入图片描述
    第6步:移动画笔坐标位置,绘制(右眼圆圈)
    在这里插入图片描述
    第7步:画出当前路径的边框
    在这里插入图片描述
    第8步:移动画笔坐标位置,绘制(左眼圆圈)
    在这里插入图片描述
    笑脸效果图:
    在这里插入图片描述
  3. canvas对象方法介绍:
    CanvasContext.draw ():将之前在绘图上下文中的描述(路径、样式、变形)画到canvas中。
    CanvasContext.arc():创建一条弧线。
    CanvasContext.rect():创建一个矩形路径。
    CanvasContext.lineTo():新增一个新点,用stroke方法来画线条。
    CanvasContext.moveTo():把路径移动到画布中的指定点,不创建线条。

6.1.3 钟表页面布局

在这里插入图片描述

6.1.4 钟表页面绘制

在这里插入图片描述

6.2【案例6】罗盘动画

6.2.1 案例分析

风水罗盘动画任务需求

  • 实现旋转动画效果。
  • 实现缩放动画效果。
  • 实现移动动画效果。
  • 实现倾斜动画效果。
  • 实现旋转和缩放动画同时效果。
  • 实现旋转后缩放动画效果。

6.2.2 前导知识

  1. wx.createAnimation()
    wx.createAnimation() 参数对象的常用属性
    在这里插入图片描述
  2. animation动画对象
    • animation.step():动画队列。
    • animation.export():导出动画。
    • animation.rotate(number angle):从原点顺时针旋转一个角度。
    • animation.scale(number sx, number sy):缩放。
    • animation.skew(number ax, number ay):倾斜
    • animation.translate(number tx, number ty):平移变换。

6.2.3 设计罗盘页面布局

在这里插入图片描述
在这里插入图片描述

6.2.4 手指触摸旋转罗盘

在这里插入图片描述

在这里插入图片描述

6.2.5 单击按钮操作罗盘

  1. 编写rotate()函数,实现从原点顺时针旋转一个角度
    在这里插入图片描述
  2. 编写scale()函数,实现缩放效果
    在这里插入图片描述
  3. 编写translate()函数,实现平移变换
    在这里插入图片描述
  4. 编写skew()函数,实现对 X、Y 轴坐标进行倾斜
    在这里插入图片描述
  5. 编写rotateAndScale()函数,实现旋转和缩放同时进行
    在这里插入图片描述
  6. 编写rotateThenScale()函数,实现旋转之后再缩放
    在这里插入图片描述
  7. 编写all()函数,实现同时展示全部动画
    在这里插入图片描述
  8. 编写allOrder()函数,实现按顺序展示全部动画
    在这里插入图片描述
  9. 编写reset()函数,实现回到原始状态
    在这里插入图片描述

6.3【案例7】文件上传与下载

6.3.1 案例分析

文件上传、下载案例任务需求

  • 实现了请求服务器文件的上传与下载。
  • 实现调起设备录音功能。
  • 实现停止录音功能。
  • 实现播放录音功能。
  • 实现上传录音文件到服务器的功能

6.3.2 前导知识

  1. 录音API
    在这里插入图片描述
  2. 文件上传API
    在这里插入图片描述
  3. 文件下载API
    在这里插入图片描述

6.3.3 录音和上传

在这里插入图片描述

在Page()前面编写代码,获取音频实例对象和录音管理器对象,并在录音完成后保存音频文件的临时路径

在这里插入图片描述

在Page()中编写代码:
在这里插入图片描述

6.3.4 文件的下载

文件的下载任务需求

  • 用户单击“播放文章”按钮,调用wx.downloadFile()方法。
  • 把服务器文件下载到本地。
  • 接口调用成功后,在success()回调函数中播放音频文件。

在这里插入图片描述

在这里插入图片描述

6.4【案例8】在线聊天系统

6.4.1 案例分析

在线聊天案例实现了客户端和服务器端的对话聊天,服务器端用Node.js来搭建服务,客户端通过小程序中的WebSocket API来实现。
在线聊天系统任务需求

  • 服务器向小程序发送消息,展示在聊天界面的左侧。
  • 小程序向服务器发送信息,展示在聊天界面的右侧。
  • 小程序发送消息,服务器端收到后自动回复消息返送给小程序。

页面效果图:
在这里插入图片描述

6.4.2 前导知识

  1. WebSocket
    WebSocket作用
    • 实现了浏览器和服务器的全双工通信。
    • 是客户端与服务器之间专门建立的一条通道。
    • 建立连接后,就可以从通道中实时获取服务器的数据。

注意事项:WebSocket的协议是以ws或wss开头的,在小程序中,正式项目必须使用wss协议,在开发模式下可以使用ws协议。

  1. wx.connectSocket(),创建一个WebSocket连接:
    在这里插入图片描述
  2. wx.sendSocketMessage(),通过WebSocket连接发送数据:
    在这里插入图片描述
  3. wx.onSocketMessage(),监听WebSocket接受到服务器的消息事件:
    在这里插入图片描述

6.4.3 编写Node.js服务器端代码

本节选择使用Node.js搭建开发者服务器,安装Node.js,创建项目

  1. 初始化项目,将会自动创建package.json配置文件。
    在这里插入图片描述
  2. 安装webSocket库。
    在这里插入图片描述
  3. 安装nodemon监控文件修改(如果已经安装则跳过此步)。
    在这里插入图片描述

执行上述命令后,在项目目录下创建socket.js文件,编写代码如下:

  1. 引入http模块和WebSocket库。
    在这里插入图片描述
  2. 创建一个webSocket Server。在这里插入图片描述
  3. 事件监听。
    在这里插入图片描述
  4. 连接的关闭监听。
    在这里插入图片描述
  5. 接收控制台中的输入。
    在这里插入图片描述
  6. 暴露对外访问接口地址。
    在这里插入图片描述
  7. 保存上述代码后,执行如下命令,启动服务器。
    在这里插入图片描述

6.4.4 实现通信功能

  1. 创建空白项目,在app.json中添加页面路径。
    在这里插入图片描述
  2. 进入index.js中,连接服务器测试。
    在这里插入图片描述

执行上述代码,在服务器控制台看到输出结果。
在这里插入图片描述

小程序端控制台接收消息结果,如下图所示:
在这里插入图片描述

6.4.5 编写聊天页面

在这里插入图片描述

在这里插入图片描述

进入index.js文件,监听服务器发送给客户端的消息,并将消息显示在页面中。
在这里插入图片描述

编写rolling_bottom()方法,使聊天内容始终显示在最底端。
在这里插入图片描述

初始化data:{}数据。
在这里插入图片描述

编写input输入框绑定事件bindChange()函数,监听input值的改变。
在这里插入图片描述

编写“发送”按钮绑定事件send()函数,判断发送内容是否为空。
在这里插入图片描述

编写temp对象。
在这里插入图片描述

编写发送对象为空的逻辑代码。
在这里插入图片描述

编写关闭页面的onUnload()函数,关闭WebSocket连接。
在这里插入图片描述

总结

本章讲解了canvas绘图、animation动画、文件上传与下载、录音与播放,以及通过WebSocket实现在线聊天系统。通过本章学习,读者应掌握这些技术的使用,能够利用canvas来绘制各种图形;能够使用animation动画实现移动、旋转、移动、缩放等效果;能够根据实际需求开发文件上传、下载、录音、在线聊天等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_285693.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于药物|新药|药品市场调研报告(实操资料分享)

药品市场调研报告是指对药品行业进行详细的市场情况研究和分析。往往伴随着药品市场调研目的地不同,如战略探索、新药开发、投资决策等,报告编辑的内容要点要求也不一样。但总的核心要点内容笔者已提炼,如下: 一、药品市场调研报告…

Python学习笔记--判断语句

(一) 布尔类型和比较运算符 1. 布尔类型:判断结果 True:表示真(是、肯定) False:表示假(否、否定) """ 演示布尔类型的定义 以及比较运算符的应用 "…

【花雕学AI】找出合适的提示词—让ChatGPT发挥出最大的潜力与价值

ChatGPT 是一种基于人工智能技术的自然语言处理系统,它可以回答各种问题,提供有用的信息和建议。然而,要让 ChatGPT 发挥出最大的潜力和价值,我们需要使用一些提示词来帮助它更好地理解我们的问题和需求。这些提示词包括明确、详细…

文件上传漏洞 --- php邂逅windows通用上传缺陷

目录 后端源码 前端源码 后端代码审计 方式一绕过原理 --- 冒号加特性 验证及结果 方式二绕过原理 --- 数据流 验证及结果 环境需求 php5.2.17IIS环境&#xff0c;可以下载phpstuday2018来满足环境的要求。 后端源码 <?php //U-Mail demo ... if(isset($_POST[sub…

项目3:积分等级表接口的开发和使用(后台)

项目3&#xff1a;积分等级表接口的开发和使用 1.service-core的controller创建admin包 2.对积分登记表完成增删改查 3.配置swagger接口生成器和ui 4.统一设置返回结果 5.统一设置异常处理 6.统一日志处理 项目3&#xff1a;积分等级表接口的开发和使用 1.service-core的…

编码与加密基础笔记

文章目录&#x1f449;1、ASCII 编码&#x1f449;2、了解Base64&#x1f449;3、MD5消息摘要算法&#x1f449;4、对称加密与 AES&#x1f449;5、非对称加密与 RSA参考书籍《Python 3 反爬虫原理与绕过实战》&#x1f449;1、ASCII 编码 ASCII编码实际上约定了字符串和二进制…

unity的基本窗口界面简要介绍

呜呜呜呜呜呜呜呜呜&#xff0c;怎么可能不难过啊&#xff0c;这tm比失恋难受 学习学习&#xff0c;我要移情别恋 打开一个项目&#xff0c;在左上角或者其他地方&#xff0c;能看到以下界面 Scene&#xff1a;场景编辑窗口 在这个界面我们可以自由切换视角观看场景&#xff0…

Web前端基础——盒子模型

&#xff08;1&#xff09;盒子模型的作用&#xff1a; 布局网页&#xff0c;摆放盒子和内容 &#xff08;2&#xff09;盒子模型重要组成部分&#xff1a; 内容区域 - width & height内边框 - padding&#xff08;出现在内容与盒子边缘之间&#xff09;边框线 - border外…

MySQL---数据类型

文章目录前言一、数据类型分类二、数值类型1.tinyint类型2.bit类型三、小数类型1.float2. decimal三、字符串类型1.char2.varchar3.char和varchar比较四、日期和时间类型五、enum和set我们如何找到性别是男或者女呢?我们如何找到爱好有rapper呢?总结前言 正文开始!!! 一、数…

NE555 Motor LED Chaser

文章目录1.前言2.资料下载1.前言 这个是从YouTube上搬运来的&#xff0c;如图所示 2.资料下载 所需材料 #1# 10k resistor 1 #2# 10k variable resistor 1 #3# 10uf capacitor 1 #4# 3mm blue led 4 #5# 3mm yellow led 4 #6# 3mm red led 4 #7# 3mm green led 4 #8# 3mm w…

新规拉开中国生成式AI“百团大战”序幕?

AI将走向何方&#xff1f; ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论&#xff0c;AI该如何管理&#xff1f;AI该如何发展&#xff1f;一系列问题都成为人们热议的焦点。此前&#xff0c;马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代&#xf…

OpenCV实战之人脸美颜美型(六)——磨皮

1.需求分析 有个词叫做“肤若凝脂”,直译为皮肤像凝固的油脂,形容皮肤洁白且光润,这是对美女的一种通用评价。实际生活中我们的皮肤多少会有一些毛孔、斑点等表现,在观感上与上述的“光润感”相反,因此磨皮也成为美颜算法中的一项基础且重要的功能。让皮肤变得更加光润,就…

记录一次使用宝塔部署Vue3 + Spring boot项目遇到的问题

一. Vue相关配置 1. 修改Vue配置文件&#xff1a;&#xff08;vue.config.js&#xff09;,没有该文件则在项目根目录下新建 const { defineConfig } require(vue/cli-service)module.exports defineConfig({transpileDependencies: true,assetsDir: assets, // 静态资源保存…

C. Pinkie Pie Eats Patty-cakes(二分)

Problem - C - Codeforces 小粉饼买了一袋不同馅料的馅饼饼!但并不是所有的馅饼饼在馅料上都各不相同。换句话说&#xff0c;这个袋子里有一些馅料相同的馅饼。小粉派一个接一个地吃蛋糕。她喜欢玩&#xff0c;所以她决定不只是吃馅饼蛋糕&#xff0c;而是尽量不经常吃同样馅料…

[Django] 后台管理系统

浏览之前&#xff0c;请先阅读以下文章 1.Django项目创建 2.Django路由系统 在项目目录下的urls.py文件中&#xff0c;我们会看到这样一个url的配置 启动服务&#xff0c;在浏览器中输入网址http://127.0.0.1:8000/admin/&#xff0c;结果如下 Django提供了一个非常强大的管…

“绿菜单”2.0发布 数据中心液冷生态建设进入加速期

近年来&#xff0c;随着数字化社会对算力需求的不断增长&#xff0c;数据中心能耗与散热问题日益凸显。液冷作为更加高效、低能耗的制冷技术&#xff0c;逐渐成为了数据中心建设的热门选择。对此&#xff0c;产业上下游企业热情高涨&#xff0c;液冷产品与方案纷纷亮相&#xf…

【JSON学习笔记】3.JSON.parse()及JSON.stringify()

前言 本章介绍JSON.parse()及JSON.stringify()。 JSON.parse() JSON 通常用于与服务端交换数据。 在接收服务器数据时一般是字符串。 我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。 语法 JSON.parse(text[, reviver])参数说明&#xff1a; text:必需&…

hadoop单机版安装

文章目录1. 将安装包hadoop-3.1.3.tar.gz上次至linux中2. 进行解压操作3. 修改目录名称4. 配置环境变量5. 使用官方提供的jar包实现wordcount案例1. 将安装包hadoop-3.1.3.tar.gz上次至linux中 2. 进行解压操作 tar -zxvf hadoop-3.1.3.tar.gz -C /opt/softs/##tar: 解压打包的…

Prophet学习(一) Python API实现

目录 Python API 详细介绍 完整代码&#xff1a; Python API 详细介绍 Prophet遵循sklearn模型API。我们创建Prophet类的实例&#xff0c;然后调用它的fit和predict方法。 Prophet的输入总是一个有两列的数据帧:ds和y。ds(日期戳)列应该是Pandas期望的格式&#xff0c;理想…

自动内存管理之【常量池】

首先上一段代码&#xff0c;一起思考&#xff0c;打印的结果&#xff0c;基于jdk1.8。 StringBuilder sbnew StringBuilder("我爱我媳妇儿");String s sb.toString();System.out.println(s.intern()s); //falsesb.append("&#xff0c;她也很爱我&#xff01;&…