以下是修改后的代码:
<view class="flex flex-direction"> <button class="cu-btn lg margin-tb-sm" :class="isRecording ? 'bg-red' : 'bg-blue'" @touchstart="handleTouchStart" @touchend="stopRecording" style="height: 80px;"> <text class="cuIcon-voice"></text> {{isRecording ? '松开结束' : '按住不放开始'}} </button> </view>
然后在你的JavaScript/Vue方法部分添加以下代码:
data() { return { isRecording: false, lastTouchTime: 0, touchThreshold: 300 // 设置触发间隔阈值,单位毫秒 } }, methods: { handleTouchStart(e) { const now = Date.now(); // 检查距离上次触发的时间是否超过阈值 if (now - this.lastTouchTime > this.touchThreshold) { this.lastTouchTime = now; this.startRecording(e); } }, startRecording(e) { // 原来的录音开始逻辑 if (!this.isRecording) { this.isRecording = true; // 其他录音开始代码... } }, stopRecording(e) { // 录音结束逻辑 if (this.isRecording) { this.isRecording = false; // 其他录音结束代码... } } }解决方案说明添加了一个新的方法 handleTouchStart 来处理 touchstart 事件使用时间戳来跟踪上次触发的时间设置了一个阈值(这里是300毫秒),只有当两次触发的间隔大于这个阈值时,才会真正执行录音开始的逻辑这样可以有效防止用户快速点击导致的多次触发问题
你可以根据实际需求调整 touchThreshold 的值,使其更适合你的应用场景。
网友回复
腾讯混元模型广场里都是混元模型的垂直小模型,如何api调用?
为啥所有的照片分辨率提升工具都会修改照片上的图案细节?
js如何在浏览器中将webm视频的声音分离为单独音频?
微信小程序如何播放第三方域名url的mp4视频?
ai多模态大模型能实时识别视频中的手语为文字吗?
如何远程调试别人的chrome浏览器获取调试信息?
为啥js打开新网页window.open设置窗口宽高无效?
浏览器中js的navigator.mediaDevices.getDisplayMedia屏幕录像无法录制SpeechSynthesisUtterance产生的说话声音?
js中mediaRecorder如何录制window.speechSynthesis声音音频并下载?
python如何直接获取抖音短视频的音频文件url?