Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

barrage text appear overlapping #3

Closed
Seifon opened this issue May 12, 2019 · 28 comments
Closed

barrage text appear overlapping #3

Seifon opened this issue May 12, 2019 · 28 comments

Comments

@Seifon
Copy link

Seifon commented May 12, 2019

barrage text appear overlapping

弹幕里的文字会重叠

@danielwii
Copy link
Owner

默认是会重叠的,今天我会发布一个新的版本,包括增加一个海量模式的开关,关闭的时候弹幕不会重叠,弹幕数量过多没法显示的时候会丢失弹幕。

@Seifon
Copy link
Author

Seifon commented May 13, 2019

如果开启了海量模式,但是弹幕数量很少的情况下,还会出现重叠现象吗?

@danielwii
Copy link
Owner

理论上应该不会。
海量模式的区别在于没有可用的通道的时候会不会被丢弃。

@Seifon
Copy link
Author

Seifon commented May 13, 2019

那挺好的,我晚上试试看

@Seifon
Copy link
Author

Seifon commented May 13, 2019

还是有一点小问题。我send(Text(color: colors.white)); 发送的弹幕是一个白色的文本,可是弹幕发射出来,有的是白色,有的是黑色额

@danielwii
Copy link
Owner

能截图看一下吗?

@Seifon
Copy link
Author

Seifon commented May 13, 2019

barrageWallController.send([
new Bullet(
child: Text(
bulletScreenContent.content,
style: TextStyle(color: Colors.white),
))
]);

@Seifon
Copy link
Author

Seifon commented May 13, 2019

稍等一下,我截图看看看

@Seifon
Copy link
Author

Seifon commented May 13, 2019

@danielwii
Copy link
Owner

我创建了一个 gitter.im,你可以在项目首页找到 badge,方便的话在那里说吧,还有些问题需要确认下。

@Seifon
Copy link
Author

Seifon commented May 13, 2019

没有找到啊

@Seifon
Copy link
Author

Seifon commented May 13, 2019

弹幕刚开始会出现黑色字体,发射一会后,就没有黑色字体了

@danielwii
Copy link
Owner

@Seifon
Copy link
Author

Seifon commented May 13, 2019

昨天的版本没有这个问题,要不你对比一下改动代码看看

@Wing-Li
Copy link

Wing-Li commented Jan 14, 2021

massiveMode 不论设置为 true 还是 false ,弹幕依然还是会覆盖啊。


解决办法:
设置下 maxBulletHeight 就好了。
maxBulletHeight 才是最关键的啊,设置了这个,其他的什么都不用设置,就不覆盖了。

@danielwii
Copy link
Owner

@Wing-Li 原理就是通过 maxBulletHeight 来计算出可用的 channel。最近使用者不少,之后我再完善下文档,详细说明下。

@Wing-Li
Copy link

Wing-Li commented Jan 15, 2021

@Wing-Li 原理就是通过 maxBulletHeight 来计算出可用的 channel。最近使用者不少,之后我再完善下文档,详细说明下。

挺棒的,感觉 Flutter 库里能找到的弹幕插件,就只有你这个可以用。其余的或多或少都不完善。

@danielwii
Copy link
Owner

@Wing-Li 感谢分享和 star。

@343863527
Copy link

我设置了maxBulletHeight依然会重叠啊

@danielwii
Copy link
Owner

@343863527 你可以在 examples 下面加个复现的例子吗?或者单独做个复现的库,我上去看下。

@InTheClodus
Copy link

其实问题出现在showTime 这个方法上,因为用的是随机数,所以只要随机数多了,就容易出现重复的数字就会导致重复,
我尝试写这个方法来过滤重复的随机数,但是效果不是很好

  /// 用于记录已经存在的数据
  List<int> resultList = [];
  final _random = Random();

  int next2(int min, int max) {
    /// 如果不存在当前的实际则直接返回,并添加防止下回随到
    if (!resultList.contains(min + _random.nextInt(max - min))) {
      resultList.add(min + _random.nextInt(max - min));
      return min + _random.nextInt(max - min);
    } else {
      /// 稍微调整随机数,使得更随机
      return min +
          _random.nextInt(
              (max + _random.nextInt(min)) - (min - _random.nextInt(min)));
    }
  }
next2(1, 100000)

代替

random.nextInt(60000)

@danielwii
Copy link
Owner

danielwii commented Oct 28, 2022

你说的 showTime 方法是指哪个?
海量模式作为一个开关用于约定两种显示弹幕的模式:

  • 关闭海量模式。通过高度分割出了若干个弹幕通道,弹幕通过一个随机数落在某个通道中,无可用通道时丢弃。
  • 开启海量模式。直接随机位置输出弹幕。

@InTheClodus
Copy link

你说的 showTime 方法是指哪个? 海量模式作为一个开关用于约定两种显示弹幕的模式:

  • 关闭海量模式。通过高度分割出了若干个弹幕通道,弹幕通过一个随机数落在某个通道中,无可用通道时丢弃。
  • 开启海量模式。直接随机位置输出弹幕。
      final showTime = random.nextInt(60 * 60 * 1000);
      return Bullet(
        showTime: showTime,
//        child: Text('$i-$showTime'),
        child: IgnorePointer(child: Text('$i-$showTime')),
      );

Bullet下的这个showTime,随机数随出来的时间一样的情况下,弹幕就会出现堆叠的情况

@danielwii
Copy link
Owner

这是示例中的代码,这个showTime的概念对应的是你的视频中的具体的一个时间戳。
这里用随机值只是生成了一些测试的弹幕。

@InTheClodus
Copy link

这是示例中的代码,这个showTime的概念对应的是你的视频中的具体的一个时间戳。 这里用随机值只是生成了一些测试的弹幕。

这样子,然而,我有个项目客户要求有弹幕,但是后台给我返回的就一个字符串列表,所以我这里只能用随机数

@danielwii
Copy link
Owner

是在视频或音频上的话用该视频或音频当前播放的时间戳就行了。

@InTheClodus
Copy link

是在视频或音频上的话用该视频或音频当前播放的时间戳就行了。

我们是在一张图片上方显示的,没有视频和音频那些 (✘_✘)

@danielwii
Copy link
Owner

哦,明白了,那这是个产品设计问题了。。。试试海量模式?让它随机显示就可以了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants