barrage.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import CustomPage from '../../../base/CustomPage'
  2. const {mockData} = require('./utils')
  3. CustomPage({
  4. onShareAppMessage() {
  5. return {
  6. title: 'barrage',
  7. path: 'packageExtend/pages/extend/barrage/barrage'
  8. }
  9. },
  10. data: {
  11. src: 'http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400',
  12. toggle: true,
  13. barrageValue: '',
  14. showBarrage: false,
  15. },
  16. onReady() {
  17. this.addBarrage()
  18. },
  19. addBarrage() {
  20. const barrageComp = this.selectComponent('.barrage')
  21. this.barrage = barrageComp.getBarrageInstance({
  22. font: 'bold 16px sans-serif', // 字体
  23. duration: 15, // 弹幕时间 (移动 2000px 所需时长)
  24. lineHeight: 2, // 弹幕行高
  25. mode: 'overlap', // 弹幕重叠 overlap 不重叠 separate
  26. padding: [10, 10, 10, 10], // 弹幕区四周
  27. range: [0, 1],
  28. tunnelShow: false,
  29. })
  30. // this.barrage.open()
  31. // const data = mockData(100)
  32. // this.barrage.addData(data)
  33. // this.timer = setInterval(() => {
  34. // const data = mockData(100);
  35. // this.barrage.addData(data);
  36. // }, 2000)
  37. },
  38. fullscreenchange() {
  39. this.setData({
  40. toggle: false
  41. })
  42. setTimeout(() => {
  43. if (this.barrage) this.barrage.close()
  44. this.setData({toggle: true})
  45. this.addBarrage()
  46. }, 1000)
  47. },
  48. handleOpenClick() {
  49. this.setData({
  50. showBarrage: true,
  51. })
  52. this.barrage.open()
  53. const data = mockData(3)
  54. this.barrage.addData(data)
  55. this.timer = setInterval(() => {
  56. const data = mockData(5)
  57. this.barrage.addData(data)
  58. }, 2000)
  59. },
  60. handleCloseClick() {
  61. this.barrage.close()
  62. this.setData({
  63. showBarrage: false,
  64. })
  65. },
  66. handleInput(e) {
  67. this.setData({
  68. barrageValue: e.detail.value,
  69. })
  70. },
  71. handleAddClick() {
  72. const data = mockData(1, [this.data.barrageValue])
  73. this.barrage.addData(data)
  74. this.setData({
  75. barrageValue: '',
  76. })
  77. },
  78. handleTunnelShowClick() {
  79. this.barrage.showTunnel()
  80. },
  81. handleTunnelHideClick() {
  82. this.barrage.hideTunnel()
  83. }
  84. })