Closed yshmore closed 6 years ago
对的,CoreComment
和其子类的stop()
并不保证能单独停止弹幕,因为不同的后端实现有不同的停止需求(如果是基于主event timer,比如定位动画,由于共享timer所以不能设计单独停止。如果是基于CSS动画则这个会按照预期工作)。
如果需要可停止的定位弹幕,最好的方法是创造新的子类,然后实现另一个函数。CoreComment是动画弹幕,其位置由ttl和dur决定。所以停止的方法是创造一个flag让 time 函数有时无视其输入。
class StoppableCoreComment extends CoreComment {
private _stopped = false;
public stop() {
//注意不要实现在这里因为 stop() 会被 cm.stop() 调用
//那样的话,等cm.start() 时,不会重新自动启动
}
public detachStop() {
this._stopped = true;
}
public detachStart() {
this._stopped = false;
}
public time(t) {
if (!this._stopped) {
super.time(t);
}
}
}
注意:
hmm,看起来没有回复就先关掉这个了。如果有问题欢迎再开。
看了下CoreComment.prototype.stop的实现是空