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

news2025/1/18 4:39:44

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.coloradmin.cn/o/422860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

总结821

学习目标: 4月(复习完高数18讲内容,背诵21篇短文,熟词僻义300词基础词) 学习内容: 暴力英语:早上背颂并默写第19篇文章《I always knew I was going to be rich》,还有两三篇就达成…

Xamarin 可能的替代者.NET MAUI

Xamarin,虽然在 Android、iOS 和 Windows 上做得很好,但我们很快就会忘掉它。Xamarin的替代者已接近完成正式版并且有许多的改进: .NET MAUI。 就像很多人知道的那样,Xamarin 是微软专注于移动应用程序( iOS、Android和Windows)并…

JavaSE学习进阶day04_05 常见算法和泛型

9.1 排序概述 另外一种排序的方式,每一次比较完毕之后,本次循环中最大的数字就跑到右边去了 建议复习一下数据结构的排序章节 代码实现就不再说了,大家可以尝试写,但是我们今后一般都调用java里已经写好的排序算法。在C里也有已…

【AXU3EG】UltraScale+ MPSoC以及开发板介绍

Copyright © 2012-2020 芯驿电子科技(上海)有限公司 UltraScale MPSoC Zynq UltraScale MPSoC 系列是 Xilinx 第二代平台,其在 FPGA 内部集成了完整 ARM 处理子系统(PS),包含了四核 Cortex-A53 加双核…

03-深度学习

一、适合图像处理的卷积神经网络 1. 为什么卷积神经网络适合图像处理? 如上图所示,如果使用全连接神经网络的话,输入图像大小为 1024x1024,第一层隐层神经元个数为 1000,第一层权重数量级为 109,过多的参数会导致过拟合。而卷积神经网络可以有效减少权重数量。 2. 卷积神…

HTML5 表单元素

文章目录HTML5 表单元素HTML5 新的表单元素HTML5 \<datalist> 元素HTML5 \<keygen> 元素HTML5 \<output> 元素HTML5 新表单元素HTML5 表单元素 HTML5 新的表单元素 HTML5 有以下新的表单元素: <datalist><keygen><output> 注意:不是所有…

【LLM】Windows本地CPU部署民间版中文羊驼模型踩坑记录

目录 前言 准备工作 Git Python3.9 Cmake 下载模型 合并模型 部署模型 前言 想必有小伙伴也想跟我一样体验下部署大语言模型, 但碍于经济实力, 不过民间上出现了大量的量化模型, 我们平民也能体验体验啦~, 该模型可以在笔记本电脑上部署, 确保你电脑至少有16G运行…

HTML学习(3)

文章目录HTML计算机代码HTML5语义元素HTML5 代码约定HTML字符集与符号HTML URLHTML 背景我的个人博客&#xff1a;欢迎来逛逛 HTML计算机代码 支持固定的字母尺寸和间距&#xff1a;<kbd> <samp> <code> <html><body><p>open a file,sel…

应用信息资源管理(张士玉、董焱)——第一章 总论

第一章 总论 1.1 信息社会 1.1.1 信息社会的形成 信息社会是指以信息技术为基础&#xff0c;信息产业为支撑&#xff0c;信息化为主要特征的社会形态。其形成经历了以下几个阶段&#xff1a; 信息化初期&#xff1a;20世纪60年代至70年代&#xff0c;电子计算机的出现和发展…

HummerRisk V1.0.0:架构全面升级,开启新篇章

HummerRisk V1.0.0发布&#xff1a; HummerRisk 由 SpringBoot 单体架构升级为 SpringCloud 微服务架构&#xff0c;性能和效率显著提升。同时新增 K8s 的检测规则组和规则实现&#xff0c;并优化多个模块的设计逻辑。 HummerRisk 保持高速的迭代&#xff0c;期待您的关注。 …

Cesium实践(3)——坐标系与相机系统

文章目录前言Cesium 坐标系屏幕坐标系空间直角坐标系WGS-84坐标系坐标系转换角度与弧度互转84坐标转笛卡尔空间坐标笛卡尔空间坐标转84坐标屏幕坐标转笛卡尔空间坐标笛卡尔空间直角坐标转屏幕坐标Cesium相机默认交互相机姿态参数常用方法DEFAULT_VIEW_RECTANGLEsetViewflyToflo…

关于DMA的笔记

DMA(Direct Memory Access, 直接储存器访问)&#xff0c;是部分总线架构提供的功能&#xff0c;DMA传输功能能将数据从一个地址空间复制到另一个地址空间&#xff0c;实现从附加设备/外设与储存器或储存器与储存器之间的高速传输。 我们结合案例解释DMA的功能&#xff1a;在我…

HTTPS 加密协议

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录HTTPS"加密" 是什么HTTPS 的工作过程引入证书HTTPS http 安全层 (SSL) SSL 用来加密的协议&#xff0c;也叫 TLS …

类型转换——C++

1. C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与接收返回值类型不一致时&#xff0c;就需要发生类型转化&#xff0c; C语言中总共有两种形式的类型转换&#xff1a;隐式类型转换…

刘二大人《Pytorch深度学习实践》第十讲卷积神经网络(基础篇)

文章目录卷积神经网络基础卷积层池化层课上代码GPU版本代码卷积神经网络基础 全连接的网络将图片的的本身二维空间结构进行了破坏&#xff0c;而这些空间结构是有用的&#xff0c;因此&#xff0c;要定义新的操作图像的计算节点&#xff0c;因此引入了卷积神经网络&#xff0c;…

JavaWeb开发 —— 请求响应

目录 一、概述 二、请求 1. postman工具 2. 简单参数 3. 实体参数 4. 数组集合参数 5. 日期参数 6. JSON参数 7. 路径参数 三、响应 1. ResponseBody 2. 统一响应结果 3. 案例 一、概述 通过之前对 JavaWeb开发 —— Web入门 的学习&#xff0c;我们开发…

失眠一月码出527页文档,详解SpringCloud微服务和分布式系统实践

所谓的分布式系统&#xff0c;就是一组计算机为了共同完成业务功能通过网络协作的多节点系统。分布式系统本身也有一系列需要解决的问题&#xff0c;包括多个计算机节点的路由选择、各个服务实例的管理、节点监控、节点之间的协作和数据一致性等&#xff0c;当然还有网络故障、…

lamp 架构的搭建

php 解释动态页面 php来连接数据库 mysql 页面信息和端口信息 存放数据 apache 前端web服务器&#xff0c;展现页面 源码编译安装这三个服务 配置下载apache: systemctl stop firewalld 关闭安全机制&#xff0c;防火墙 可以一条命令:systemctl is-enabled firewalld 和 s…

【推荐系统】model 落地(样本/特征/预测服务)

兜率宫小道童的个人空间-兜率宫小道童个人主页-哔哩哔哩视频&#xff08;如下是该视频课系列的笔记&#xff09; 1-深度学习在搜索、广告、推荐系统中的应用-业务问题建模_哔哩哔哩_bilibili 其他章节 目录 二、深度学习落地 模型训练服务流程 1-样本生成-标签拼接 1-样本…

OJ练习第73题——解数独

解数独 力扣链接&#xff1a;37. 解数独 题目描述 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一…