Blog

小程序: wx.createInnerAudioContext以及用data绑定固定动态class

1.wx.createInnerAudioContext 小程序虽说不维护audio组件,但在1.6.6版本后就不再支持audio了,尤其在ios不能播放audio了,强制改用wx.createInnerAudioContext来播放audio。 譬如页面原先是使用audio播放音频,只要在wxml页面写下如下代码就可以执行: 在微信开发工具上是可以呈现的,但要是用真机是点击音频播放按钮是无效的。 所以下面要在js文件中使用wx.createInnerAudioContext来呈现音频的播放功能 (1).首先在wxml写下view或button或block,推荐用view 原理:在wxml文件中,需要有bindtap,主要是点击这个位置时候会响应js文件中audioPlay操作,所以在js文件中audioPlay来定义wx.createInnerAudioContext,如果你不需要监听音频事件,三行代码就可以了,但是一般都没有这么简单的操作逻辑。下面就介绍多个音频文件的class监听。 2.利用data绑定wxml中的固定class 如上图,如果你的页面有多个相同的class,如何利用js绑定音频文件和class? 在class中添加一个三目运算符,譬如上面的{{((!isplay)?’play’:’pause’)}},意思是if not play,class=”play”; else class=”pause”. 通过wxml中bindtap传递id=id=”0001.mp3″到js文件中audioPlay,利用innerAudioContext.src = ‘https://www.xxx.com/’ + event.currentTarget.id 来绑定音频文件,这样点击bindtap就可以播放这个固定id的音频了。 重点来了:因为使用wx.createInnerAudioContext在xml view中是不显示音频的,所以你就需要在view 的class=play或pause来background-image不同的音频按钮。 通过js文件中onPlay和onEended来监听音频的播放和停止,然后通过setData中isplay为true或false来传递给wxml中view class=”{{((!isplay)?’play’:’pause’)}}”。 但是wxml中<view class….是相同的,所以当data传递isPlay时候,点击一个音频,所有音频按钮都会改变,所以这个时候就需要绑定每个层的class,点击这个层bingtap其他层的class不变,通过引入num=id,然后setData num: event.currentTarget.id,如果wxml class={{(num==id) then执行isplay。完全代码如下: Referrence: AudioContext wx.createAudioContext(string id,…

Read More

CentOS 7 install httpd php7.3 MariaDB10.3(Mysql5.6)

Login into centos via ssh or direct server $ yum install epel-release  -y $ yum install yum-utils -y $ yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm $ yum-config-manager –enable remi-php73 epel $ vim /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1…

Read More

解决MacOS Catalina 升级导致VMWare黑屏问题

最主要原因VMWare没有录屏权限了,但是在不升级情况下在security->Privacy->Screen Recording是无法添加进去的,只能先关闭 csrutil. 环境: macOS Catalina VMWare Fusion 8.5.10 首先重启mac,在即将启动的时候按住CMD+R键,直到出现苹果logo 然后选择用户,输入密码进入recover mode。 在menu上面选择->Utilities->Terminal 输入 csrutil disable 重启进入正常模式,打开terminal输入以下命令 tccutil reset All com.vmware.fusion sudo sqlite3 “/Library/Application Support/com.apple.TCC/TCC.db” ‘insert into access values (“kTCCServiceScreenCapture”, “com.vmware.fusion”, 0, 1, 1, “”,…

Read More

Sublime Text 中使用正则表达式查找与替换

如上图,我要把bitcoin替换成name里面的单词: 查找匹配:([a-z]*)’,'([a-z]*)’,'(\S*/)(bitcoin) \1′,’\2′,’\3\1 解释: ([a-z]*)表示第一部分,就是name中字段,然后用’,’分开第二个字段([a-z]*)即description,然后再用’,’,利用(\S*/)表示从https开始到bitcoin前的字段,即为第三部分。\S 表示匹配非空字符,*表示重复前一个表达式多次。 在替换里面,\1 \2 \3\ 分别表示查找里面的第一二三部分,因为第四部分bitocin要用第一部分替换,所以是\1,其他维持不变,所以替换表达式\1′,’\2′,’\3\1。 虽然上面能替换简单的字符,当字段中出现空格等其他字符的时候就不能查找出来了,所以采用第二种方法: 查找:'(.*)’,'(.*)’,'(\S*/)(bitcoin) 替换:’\1′,’\2′,’\3\1 这样,就将name字段以后部分查找出来了。 下面要替换大写字符为小写: 查找:coins-logos/(.*).svg 替换:coins-logos/\L\1\E.svg \E end,表示大小写转换的结束范围 \l low,表示把下一个字符转为小写 \L Low,表示把\L与\E之间的字符转为小写 \u up,表示把下一个字符转为大写 \U Up,表示把\U与\E之间的字符转为大写\E end,表示大小写转换的结束范围 \l low,表示把下一个字符转为小写 \L Low,表示把\L与\E之间的字符转为小写 \u up,表示把下一个字符转为大写 \U…

Read More