bilibili / DanmakuFlameMaster

Android开源弹幕引擎·烈焰弹幕使 ~
http://app.bilibili.com/
Apache License 2.0
9.54k stars 2.11k forks source link

弹幕设置了不允许重叠,但是不管用呢?还是出现重叠 #337

Open yanchunlan opened 7 years ago

yanchunlan commented 7 years ago

弹幕设置了不允许重叠,但是不管用呢?还是出现重叠 // 设置是否禁止重叠 HashMap<Integer, Boolean> overlappingEnablePair = new HashMap<Integer, Boolean>(); overlappingEnablePair.put(BaseDanmaku.TYPE_SCROLL_RL, true); overlappingEnablePair.put(BaseDanmaku.TYPE_FIX_TOP, true);

paul1992li commented 6 years ago

在BaseCacheStuffer.Proxy 的prepareDrawing方法中对弹幕进行异步处理,完成后修改danmaku.measureResetFlag的值,然后invalidateDanmaku(danmaku, true); 在DanmakuRetainer里边,进行碰撞检测时,这条弹幕因为danmaku.measureResetFlag与 flags.MEASURE_RESET_FLAG不一致导致导致碰撞检测失败,造成弹幕追尾。 设置标志位 1 DanmakuRetainer 碰撞检测 2 1 DanmakuUtils碰撞检测具体逻辑 2 R2LDanmaku具体实现 3 需要判断标志位,此时不一致也即判断碰撞失败 4

paul1992li commented 6 years ago

可以把源码中getRectAtTime方法中的!isMeasure()替换为!( paintWidth > -1 && paintHeight > -1)

lfh1991 commented 6 years ago

@ @paul1992li 按照你说的方法修改了源码后,弹幕还是会追尾,而且设置 danmaku.priority = 1;后,最大行数失效了。。

wanggq654321 commented 2 years ago

这个有解决方案吗?

BearTiny commented 2 years ago

邮件已收到.

wanggq654321 commented 2 years ago

这个有解决方案吗?