使用vue3实现一个人喵交流小程序
作者:我是胖虎 发布时间:2024-04-27 16:03:21
目录
前言
初始化项目
设计
代码实现
按需加载
播放音频
录音
长按事件
运行调试
总结
前言
相信很多养猫的人都很想跟自己的猫进行沟通,当猫咪发出各种不同声音的喵喵叫时,通常都会问猫咪怎么了啊,是不是饿了啊,还是怎样怎样的。我也曾经搜索过有没有宠物翻译的软件,现在自己来实现一个吧[手动狗头]。
微信小程序是不支持直接使用 vue 进行开发的,但目前行业中已经有不少解决方案去支持用各种开发框架开发跨端应用了。
Taro 3.0版本开始支持使用 Vue3 进行开发,那就用 Taro 来实现我们的微信小程序吧。
初始化项目
Taro 的详细使用可以参考官方文档,先全局安装 @tarojs/cli
npm install -g @tarojs/cli
安装成功后用 taro 命令来创建模板项目:
taro init catApp
这里选择了 vue3-nutUI 框架,这个框架功能没有 taro-ui 多,但 taro-ui 只支持 react,无奈只能用了。
设计
毕竟没有视觉出图,一切只能靠自己。马上打开 PPT,简简单单画个草图。
主要有两块功能组成:
输入想对猫咪说的话,转成喵语进行播放
录音,录下喵叫声,转成文字,也可以播放录音
代码实现
按需加载
按需引入 vue3-nutUI 框架,刚才在初始化项目时已经是按需引入了,在 app.js 中,按需引入项目所需要用到的组件即可
import { createApp } from 'vue'
import { Button,Toast,Tabbar,TabbarItem,Icon,Avatar,Input } from '@nutui/nutui-taro';
import '@nutui/nutui-taro/dist/style.css';
const App = createApp()
App.use(Button).use(Toast).use(Tabbar).use(TabbarItem).use(Icon).use(Avatar).use(Input)
export default App
播放音频
当输入想对猫主人的话,转成喵语后,想要播放,就得使用 Taro 提供的播放音频接口。播放音频现在使用官方更加推荐的 Taro.createInnerAudioContext 接口了,原先的 Taro.stopVoice 和 Taro.playVoice 不再维护了。
const innerAudioContext = Taro.createInnerAudioContext();
Taro.setInnerAudioOption({
obeyMuteSwitch: false,
});
innerAudioContext.src = 'xxx.mp3';
innerAudioContext.play();
innerAudioContext.onPlay(()=>{
console.log('开始播放')
})
innerAudioContext.onEnded(()=>{
console.log('播放结束')
})
obeyMuteSwitch 配置是(仅在 iOS 生效)是否遵循静音开关,设置为 false 之后,即使是在静音模式下,也能播放声音,默认是true的,这里没注意,疑惑了好久,还以为我自己播放音频有问题,原来是给静音了。
录音
要给猫主人录音就需要用到 Taro.getRecorderManager 录音接口
const recorderManager = Taro.getRecorderManager();
recorderManager.onStart(() => {
console.log("recorder start");
});
recorderManager.onStop((res) => {
console.log("recorder stop", res);
const { tempFilePath, duration } = res;
// tempFilePath 是录音文件的临时路径
// duration 是录音时长
// 这里需要播放时,设置录音文件地址,则可以播放录音
innerAudioContext.src = tempFilePath;
innerAudioContext.play();
});
长按事件
录音可能大家都习惯了长按时开始录音,松手时完成录音。vue3-nutUI 框架中并没有给按钮提供长按事件,所以需要用小程序原生提供的 longpress 事件,这个事件是手指触摸后,超过350ms时就会触发该事件,并且不会触发到 tap 事件。想要松手结束录音,需要结合 touchend 事件,才能完成长按录音,松手结束的需求。
<nut-button block type="info" icon="microphone" @longpress="handleLongpress" @touchend="handleTouchend">
录音
</nut-button>
运行调试
执行 npm run dev:weapp 项目,会一直监听文件修改并实时编译成小程序,然后打开微信开发者工具,导入项目,选择打开 catApp 根目录即可,就可以进行预览了。
来源:https://juejin.cn/post/7028361972982759455


猜你喜欢
- Windows环境:安装whl包:pip install wheel ->
- 存储文件的重要一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电脑之后,。 默认数据是加载到
- # -*- coding: utf-8 -*-"""Created on Sat Jun 20 19:36:3
- 只能输入中文/** * 22.验证汉字 * 表达式 ^[\u4e00-\u9fa5]{0,}$ * 描述 只能汉字 * 匹配的例子 清清月儿
- 正则表达式在 PHP 中的应用在 PHP 应用中,正则表达式主要用于:•正则匹配:根据正则表达式匹配相应的内容•正则替换:根据正则表达式匹配
- 近些时间在开始学MySQL,安装挺顺利的,按照网上现成的教程就能安装成功。但是,在输入mysql -uroot -p再输入密码时,遇到了这个
- 绘制八个子图import matplotlib.pyplot as pltfig = plt.figure()shape=['.
- 链表链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结
- 空间关系变化始于相遇,所以交点是一切的核心。相交判定首先考察一束光线能否打在某个平面镜上。光线被抽象成了一个列表[a,b,c],平面镜则被抽
- 代码如下: var lishustr = "qwertyuiopasdfghjklmnbvcxz"; var s = l
- 导语应好友邀请,帮他写了个小程序,功能类似于实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖。这样就能不
- 如果一些应用需要到中文字体(如果pygraphviz,不安装中文字体,中文会显示乱码),就要在image 中安装中文字体。默认 python
- 前阵子刚完成一个B/S架构的学校办公系统,体会就是表太多,文件太多,而每个文件中类似的操作(代码)也太多了,例如学生信息和教师信息操作,st
- 交互设计师的一项重要工作就是进行产品原型设计(Prototype Design)。而产品原型设计最基础的工作,就是画出站点的大体wirefr
- 一、测试模型下面这部分来自于某书籍资料,拿过来,按需参考一下:测试模型(1)线性测试1、概念:通过录制或编写对应应用程序的操作步骤产生的线性
- 本文实例讲述了python实现通过pil模块对图片格式进行转换的方法。分享给大家供大家参考。具体分析如下:python的pil模块相当的智能
- 代码import requestsimport timefrom tqdm import tqdmfrom bs4 import Beaut
- 数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。举个例子:x
- 本文转自微信公众号:"算法与编程之美"一、前言三步搭建MUI页面主框架法包括新建含mui的HTML文件、输入mheade
- 之前修改两张及以上表的时候,总得需要用几次语句才修改,万一其中一条没修改上,又没事务机制的话,处理很麻烦,于是想到能不能一条语句完成呢? 结