继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

taro小程序处理LivePlayer组件重力感应横屏的问题

喵居
关注TA
已关注
手记 37
粉丝 6
获赞 35

最近公司准备用做一个直播会议的小程序是用taro写的,之前没用过这个框架主要的语言是react还好之前有学过react语法上大差不差,于是直接上手了边看文档边写(当然啦有老师傅带)。

注意!!!这里提一下虽然是taro框架但是很多api还是小程序的只是类似wx.showModel这样的要写成Taro.showModel,api或者方法名很多和小程序原生的api和方法名是一样的。

我做的是直播组件的页面,主要用到的是taro的LivePlayer和LivePusher这两个组件。

https://img2.mukewang.com/5d678b310001deb505250624.jpg

在生命周期的render方法中写入这两个组件,然后在componentDidMount生命周期中通过createLivePlayerContext和createLivePusherContext这里个方法分别取到这两个实例然后是可以调用实例上对应的方法。

onAccelerometerChange获得监听加速度数据事件得到手机的三维偏移量,通过计算得到的Roll水平偏移角度,当偏移角度的绝对值在以内LivePlayer实例上的exitFullScreen退出全屏当绝对值大于50的时候调用LivePlayer实例上的requestFullScreen方法并传入direction旋转角度进入全屏。

triggerFullScreen() {
    Taro.onAccelerometerChange((res) => {
      const Roll = Math.atan2(-res.x, Math.sqrt(res.y * res.y + res.z * res.z)) * 57.3;
      // const Pitch = Math.atan2(res.y, res.z) * 57.3;
      if (Roll.toFixed(0) < -50) {
        this.state.LivePlayer.requestFullScreen({direction: -90})
      } else if (Roll.toFixed(0) > 50) {
        this.state.LivePlayer.requestFullScreen({direction: 90})
      } 
      else {
        this.state.LivePlayer.exitFullScreen()
      }
    })
  }

这是第一个用react写的项目!!!后续会继续记录更多taro小程序相关的开发博客!!!加油!!!


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP