BarrageRenderer icon indicating copy to clipboard operation
BarrageRenderer copied to clipboard

关于弹幕重叠的问题

Open keyjacky opened this issue 6 years ago • 7 comments

单单靠已经显示的数量还是不足以解决重叠的问题 因为同样的显示面积, 可以容纳size小的弹幕多, 但可以容纳 size 小的弹幕少(如弹幕字数多少就决定了 size 的大小) 所以能否增加弹幕的生命周期方法: 1.弹幕开始显示 2.弹幕完全显示 3.弹幕开始消失 4.弹幕完全消失

这样更能完善限流

keyjacky avatar Dec 26 '18 09:12 keyjacky

/// 弹幕生命周期行为,实验特性; 可试用, 亦可以通过继承 BarrageRenderer 来实现相同功能

  • (void)barrageRenderer:(BarrageRenderer *)renderer spriteStage:(BarrageSpriteStage)stage spriteParams:(NSDictionary *)params;

目前已有了 进入、消失 两个时间点的回调。其他时间点似乎用处不大。

unash avatar Jan 09 '19 16:01 unash

怎么解决弹幕重叠问题?

romainghaha avatar Jan 13 '20 03:01 romainghaha

弹幕重叠该如何解决

mapleleaf99 avatar Apr 28 '20 08:04 mapleleaf99

弹幕重叠问题,我想了一个解决办法:在计算弹幕起始位置的时候,如果没有位置放的时候,不要强制去放,这样就可以避免重叠的问题。 具体看BarrageWalkSprite的originInBounds方法中的如下代码: if (availableFrom > stripNum - overlandStripNum) { // 那就是没有找到喽 if (self.forceDraw) { availableFrom = AVAERAGE_STRATEGY?leastActiveSpriteStrip:leastActiveTimeStrip; // 使用最小个数 or 使用最短时间 } else { //当在屏幕上没有找到能放的位置时,我们返回CGPointZero,就先不放了,等有合适的位置再放 return CGPointZero; } }

实际效果看,搜狐影音mac版的弹幕

ZhongyiLi88 avatar Aug 28 '20 09:08 ZhongyiLi88

self.forceDraw

请问一下这里的forceDraw 参数是哪里来的参数 @ZhongyiLi88

LionXia avatar Sep 04 '20 05:09 LionXia

我做了一个修改版本尝试解决弹幕重叠的问题: https://github.com/dourgulf/BarrageRenderer

dourgulf avatar Feb 24 '21 01:02 dourgulf

认真想了一下,应该另外定义一个Walk对象来实现这个特性。 同时,整体框架上引入一个是否可以加入新的弹幕的接口,这样既可以保留现有的特性,有可以支持到新的特性。

dourgulf avatar Mar 02 '21 01:03 dourgulf