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

关于弹幕重叠的问题 #97

Open
keyjacky opened this issue Dec 26, 2018 · 7 comments
Open

关于弹幕重叠的问题 #97

keyjacky opened this issue Dec 26, 2018 · 7 comments

Comments

@keyjacky
Copy link

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

这样更能完善限流

@unash
Copy link
Owner

unash commented Jan 9, 2019

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

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

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

@romainghaha
Copy link

怎么解决弹幕重叠问题?

@mapleleaf99
Copy link

弹幕重叠该如何解决

@ZhongyiLi88
Copy link

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

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

@LionXia
Copy link

LionXia commented Sep 4, 2020

self.forceDraw

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

@dourgulf
Copy link

dourgulf commented Feb 24, 2021

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

@dourgulf
Copy link

dourgulf commented Mar 2, 2021

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

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

7 participants