HJDanmakuDemo icon indicating copy to clipboard operation
HJDanmakuDemo copied to clipboard

展示弹幕时,push进入一个新的页面,返回弹幕会重新开始

Open LustySwimmer opened this issue 4 years ago • 7 comments

在当前页面正常展示弹幕,点击按钮push进入一个新的页面,侧滑/点击返回发现弹幕是重新开始的

LustySwimmer avatar Dec 02 '20 07:12 LustySwimmer

显示什么弹幕是根据弹幕时间戳以及- (float)playTimeWithDanmakuView:(HJDanmakuView *)danmakuView; 综合计算出来的

panghaijiao avatar Dec 02 '20 10:12 panghaijiao

目前的测试场景是: 我起了一个0.1s的定时器来发送普通文本弹幕 停留在当前页面时弹幕会按照预期挨个显示出来 出问题场景: 在当前页面push进入一个新的页面,返回这个页面,发现屏幕上的弹幕重新开始展示 present出来一个界面(非全屏模式)不会有这个问题 所以猜测跟使用CADisplayLink来做弹幕刷新有关

LustySwimmer avatar Dec 03 '20 08:12 LustySwimmer

CADisplayLink只是当时定时器做触发用的。你是视频模式还是直播模式?视频模式:弹幕什么时候显示是根据playTimeWithDanmakuView反馈的播放时间以及弹幕的时间决定的。直播模式:弹幕没有时间戳的概念,什么时候send什么时候显示

panghaijiao avatar Dec 07 '20 02:12 panghaijiao

我是用的直播模式,本地模拟大量弹幕发送时出现的这个问题

LustySwimmer avatar Dec 09 '20 04:12 LustySwimmer

后面再观察下正式数据有没有这个问题

LustySwimmer avatar Dec 09 '20 04:12 LustySwimmer

那你看看返回时模拟数据是不是重置了

panghaijiao avatar Dec 15 '20 10:12 panghaijiao

关键问题其实是你的定时器invalidate且设置为nil了导致的。不需要在viewDidDisappear关闭定时器,而是将弹幕pause,等到返回的时候,再play。不过这样也有一个问题,就是push界面的时候定时器依然在动,要想办法停掉即可。

lxm1799 avatar Feb 09 '21 02:02 lxm1799