任务实现
- 设计图

根据设计图,步骤如下:
1.实现微信js-sdk的录音,播放,暂停的接口!具体做法是在个人页面中设定三个按钮,分别对应!
2.弹窗:背景图片先写好样式,然后点击弹窗,由于毛玻璃效果不佳(后面细说),背景暂时没调!然后分别作出开始录制、结束录制和重播以及发布页面(新设计图)!
3.实现初步交互过程:也就是说点击开始录制出现第二界面……(界面中的切换)。当时为了练手visio,还画了一个很low的图。
4.圆形进度条:计时的问题,这个可以js实现!并不难,关于实时进度条的问题!
关于圆形进度条,可以参考以下:- 参考一
- 参考二
但是,我现在实现的实时是每秒会转6度,看起来不连续,现在有个新思路,就是和js独立开,点击开始录音的话,js计时,此时动画开始(先右边转180度,然后左边再转180度,动画排队问题)。当点击结束录音的时候,动画停止!
5.功能交互部分:

基本实现的差不多了!6.播放自己录音或者听别人录音的交互部分。
由后台传回的ogg格式的音频文件,在页面中使用html5的audio!
但是注意:
苹果手机不支持ogg格式的文件!所以改成后台传回mp3格式!问题ok
7.bug检测,以及修复
其他
毛玻璃效果
这是一个很炫酷的效果,但是对于图片好实现,但是对于要作为整个div块的话,实现有难度!
实现方法可以从几个方向:
1.filter的方法,微信浏览器支持性问题。
2.svg的方法。无效
3.canvas:但是效果针对resterized image,所以在此需求不符。
4.用背景图片的方法,没有达到效果。
5.要关注的是backdrop filter
6.高端玩法:先将当前页面截屏,然后在用canvas虚化!
参考文献:
张鑫旭的文章
backdrop-filter
关于播放的按钮
暂停的三角不是应该中线对其,而是应该三个角对应圆周的距离相等。@skyway
关于微信页面的调试
- 微信自己研发的调试工具
可以看js错误,支持断点,可以调试页面,但是console.log不输出! - jsconsole
- weinre
暂时先写这些吧,再更新!
更新1
关于手按住手机屏幕计时停止
- mask出现,让屏幕overflow:hidden。但是。。。问题没这么简单!
- 必须是html和body同时设定才可以,不然只有pc端达到效果,但是微信端是没有效果的!
但是,事情往往没有这么简单,安卓手机上基本是已经没有问题了,但是坑爹的ios是这样的,它还可以上下滑,虽然没有了scroll。
解决方法就是:1
2$('body').on('touchmove', function (event) {event.preventDefault();}); //mask出现时。
$('body').unbind();//取消mask时。
更新2
关于毛玻璃的最终解决方案
- 安卓上是那种很low的纯色,估计是设计打架没有打过那个PM吧!
- ios上由于支持
filter:blur(15px)所以事先的是毛玻璃的效果。
qqX5内核常见问题
虽然微信的服务器比这坑的多,不过也是可以参考一二的!
代码如下:
1 | var u = navigator.userAgent, app = navigator.appVersion; |
更新3
关于audio的播放和停止切换的方法
就是通过audio.src来切换。1
2
3
4
5
6
7
8
9
10
11
12
13if(audio_url){
if(audio.paused){
audio.src= audio_url;
audio.play();
$(".record_play_icon .play").html("垙");
}else{
audio.pause();
$(".record_play_icon .play").html("垘");
audio.src= " ";
};
}else{
alert("请先录音!");
};
更新4
关于录音中退出页面后再调用录音接口失败
错误原因是recording
解决方案:在每次调用开始录音的接口是先执行一次wx_stopRecord()
1 | wx.stopRecord(); |
更新5
关于在非wechat中的提示问题
1 | // 判断能否使用微信接口 |
