Closed sky0014 closed 7 years ago
后来从代码里翻出来应该使用setBounds方法来改变显示区域,不过问题还是同上。
对,这是设计内的(或者说是设计的一个后果)。
CCL里面滚动弹幕的移动逻辑是通过指定一个“生存时间”,弹幕的位置根据弹幕消耗了多少生存时间决定。于是对于滚动弹幕,消耗了30%的生存时间的弹幕总会显示在70%的位置。如果运行中调整屏幕大小,那已有弹幕的位置和速度都会跟着变化。
实现这一部分位置公式的代码在 这里。如果想还原AB站的“弹幕不受控模式”,可以仿照这个类,把this.parent.width + this.width
部分换成另一个表达式就可以改变行为了(比如弹幕constructor里面记住建造时候的 parent.width 然后之后这个公式采用记住的值而不是去重新查询最新的值)。
我是直接修改width height来修改弹幕显示区域,然后发现已显示的弹幕的位置和速度都会发生变化。
请问是特意这么做的吗,好像与传统弹幕网站(AB站)的显示逻辑有点不同,他们已显示的弹幕不会变化,只影响新出现的弹幕。