关于歌词解析

Lyric(sLyric) {
let line = sLyric.split(’\n’)
// console.log(line)
let _lrcList = []
line.forEach((elem) => {
let time = elem.match(/[(\d{2,})😦\d{2})(?:.(\d{2,3}))?]/g)
if (time != null) {
let lrc = elem.split(time)[1]
let timeReg = time[0].match(/(\d{2,})😦\d{2})(?:.(\d{2,3}))?/)
// console.log(timeReg)
// 把时间转换为秒
let time2Seconds = parseInt(timeReg[1]) * 60 + parseInt(timeReg[2]) + parseInt(timeReg[3]) / 1000
_lrcList.push({
lrc,
time: time2Seconds,
})
}
})
this.setData({
lrcList: _lrcList
})
}
}
子组件相互传值

  <x-lyric class="lyric" isLyricShow="{{!isPlayingshow}}" bind:tap="onChangeLyricShow" lyric="{{lrc}}" />
  <view class="progress-bar"> <m bind:timeUpdate="timeUpdate"></m></view>
         this.triggerEvent('timeUpdate', {
              currentTime
            })
  timeUpdate(){
    this.selectAllComponents('.lyric').update(event.detail.currentTime)
  },
<scroll-view hidden="{{isLyricShow}}" class="lyric-scroll" scroll-y scroll-top="{{scrollTop}}" scroll-with-animation="true">
    <view class="lyric-panel">
      <block wx:for="{{lrcList}}" wx:key="item">
        <view class="lyric {{index==nowLyricIndex?'hightlight-lyric': ''}}">{{item.lrc}}</view>
      </block>
    </view>

</scroll-view>
 update(currentTime) {
      let lrcList = this.data.lrcList
      if (lrcList.length == 0) {
        return
      }
      if (currentTime > lrcList[lrcList.length - 1].time) {
        if (this.data.nowLyricIndex != -1) {
          this.setData({
            nowLyricIndex: -1,
            scrollTop: lrcList.length * lyricHeight
          })
        }
      }
      for (let i = 0, len = lrcList.length; i < len; i++) {
        if (currentTime <= lrcList[i].time) {
          this.setData({
            nowLyricIndex: i - 1,
            scrollTop: (i - 1) * lyricHeight
          })
          break
        }
      }
    },
 lifetimes: {
    ready() {
      // 750rpx
      wx.getSystemInfo({
        success(res) {
          // console.log(res)
          // 求出1rpx的大小
          lyricHeight = res.screenWidth / 750 * 64
        },
      })
    },
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值