小程序开发

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

本文主要是介绍taro小程序处理LivePlayer组件重力感应横屏的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

https://img2.sycdn.imooc.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小程序相关的开发博客!!!加油!!!


这篇关于taro小程序处理LivePlayer组件重力感应横屏的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!