11# 弹幕管理器 CommentManager
2- 弹幕管理器自 ` v1.0 ` 后将改成支持多种多层渲染的模式了,在此之前请先参考一些[ 不完整的API实现] ( CommentCoreLibraryAPI.md ) 。
2+ 弹幕管理器自 ` v1.0 ` 后将改成支持多种多层渲染的模式了,在此之前请先参考一些
3+ [ 不完整的API实现] ( CommentCoreLibraryAPI.md ) 。
34
45## Properties 属性
56
1415 * ` opacity ` 透明度
1516 * ` scale ` 生命时间加成(TTL Scale)
1617* ` limit ` 最大显示弹幕数量,` 0 ` 或以下表示不限制同屏弹幕数量,默认 ` 0 `
17- * ` seekTrigger ` 在 ` time() ` 调用时间数值跳跃大于这个数值(ms)时,并不输出从上一个时间到这个时间的弹幕,而是直接更新上次弹幕时间。这个数值用于避免在手动移动时间轴时导致弹幕一起输出。数值设置太大可能导致搓时间轴时大量弹幕输出,设置太小则可能导致敏感度不足而不输出弹幕。默认 ` 2000 `
18+ * ` seekTrigger ` 在 ` time() ` 调用时间数值跳跃大于这个数值(ms)时,并不输出从上一个时间到
19+ 这个时间的弹幕,而是直接更新上次弹幕时间。这个数值用于避免在手动移动时间轴时导致弹幕一起输出。
20+ 数值设置太大可能导致搓时间轴时大量弹幕输出,设置太小则可能导致敏感度不足而不输出弹幕。默认
21+ ` 2000 ` 。
1822
1923### isRunning < ; Bool> ;
20- 管理器的弹幕是否在运行。` false ` 表示没有在运行,` true ` 表示在运行。可以通过 start/stop 控制。这
21- 个参数只反映运行列表里面弹幕的运行状态 ,而不是视频的。
24+ 管理器的弹幕是否在运行。` false ` 表示没有在运行,` true ` 表示在运行。可以通过 start/stop
25+ 控制。这个参数只反映运行列表里面弹幕的运行状态 ,而不是视频的。
2226
2327### width < ; Number> ;
2428舞台的长度像素值,用于计算弹幕位置。此数只有在 init 之后才有效。
2832
2933## Methods 方法
3034
35+ ### * constructor* (StageElement: HTMLDivElement )
36+ 构造器。提供一个用于管理的 stage 来绑定弹幕管理器。
37+
3138### init(rendererType: string = 'css')
32- 初始化弹幕管理器并初次绑定舞台大小。注意:` init ` 调用时请确保弹幕舞台对象可以访问,并且已经实例化和
33- 可测大小 。如果在动态的构成组件,只要保证在调用 ` init() ` 时舞台返回的大小数据正确即可。
39+ 初始化弹幕管理器并初次绑定舞台大小。注意:` init ` 调用时请确保弹幕舞台对象可以访问,并且已经实
40+ 例化和可测大小 。如果在动态的构成组件,只要保证在调用 ` init() ` 时舞台返回的大小数据正确即可。
3441
3542初始化管理器默认播放状态是未播放,需要单独通过 ` start() ` 启用。
3643
@@ -50,24 +57,24 @@ rendererType 决定了渲染引擎类型,默认为CSS3渲染:
5057### stop()
5158暂停弹幕。运行中的弹幕将会暂停,不回被清除。暂停时调用无作用。
5259
53- 注意:stop不会停止 ` time ` 方法的调用,所以在实现暂停时应配合停止 time 调用,否则下次启动时停止
54- 期间的弹幕会一并开始移动 。
60+ 注意:stop不会停止 ` time ` 方法的调用,所以在实现暂停时应配合停止 time 调用,否则下次启动时
61+ 停止期间的弹幕会一并开始移动 。
5562
5663### clear()
57- 清除舞台。清除正在运行的管理器管辖内的所有弹幕(runline里的)。
58- 不清除 timeline。 不保证能清除代码弹幕(因为是另一个独立的系统)。
64+ 清除舞台。清除正在运行的管理器管辖内的所有弹幕(runline里的)。不清除 timeline。
65+ 不保证能清除代码弹幕(因为是另一个独立的系统)。
5966
6067### time(currentTime: Number )
6168通报目前的时间轴时间。管理器会自动处理时间前进和后退的情况,包括在需要时清除屏幕上正再运行的弹幕。
62- 这里的currentTime是绝对时间 ,对应弹幕的 stime。时间单位是毫秒(ms)。time只会把相关的弹幕放到
63- runline (运行列表)里, 至于这些弹幕是否在移动,则要根据目前管理器的 isRunning 状态。
69+ 这里的 ` currentTime ` 是绝对时间 ,对应弹幕的 ` stime ` 。时间单位是毫秒(ms)。` time ` 只会把相关的
70+ 弹幕放到runline (运行列表)里。 至于这些弹幕是否在移动,则要根据目前管理器的 ` isRunning ` 状态。
6471
6572### load(timeline: Array < ; ICommentData> ; )
6673载入一些抽象弹幕对象作为时间轴。这些弹幕对象不必排序,管理器会自动根据 stime 进行排序。` load ` 会
67- 清空之前的时间轴。请不要在播放的时候重新 load 因为那样会导致位置指针不连续而产生奇怪的bug。可以事先
68- 进行 ` time(0) ` 或者 ` seek(0) ` 操作来把播放位置复原到0 。
74+ 清空之前的时间轴。请不要在播放的时候重新 ` load ` 因为那样会导致位置指针不连续而产生奇怪的bug。
75+ 如果需要播放中更新列表,建议事先进行 ` time(0) ` 或者 ` seek(0) ` 操作来把播放指针位置复原到 ` 0 ` 。
6976
70- 动态更改弹幕列表可以采取更加安全的 ` insert ` 和` remove ` 函数
77+ 动态更改弹幕列表可以采取更加安全的 ` insert ` 和` remove ` 函数。
7178
7279### insert(data: ICommentData )
7380把弹幕插入弹幕列表(时间轴)。插入会动态调整目前的位置。` insert ` 不会立刻输出弹幕而是按照` stime `
@@ -82,19 +89,20 @@ runline(运行列表)里,至于这些弹幕是否在移动,则要根据
8289时(严格),删除相应弹幕。
8390
8491### send(data: ICommentData )
85- 把一个抽象弹幕数据对象变成一个 IComment 并放入运行列表中。当 data 对象不符合 filter 规则或者
86- 时发送不会实现。代码弹幕也要通过send发送,只不过它们会进一步被派发到代码弹幕引擎。同一个
87- ICommentData 实例如果多次用于调用这个方法会产生多个不同的弹幕实例 IComment。
92+ 把一个抽象弹幕数据对象变成一个 ` IComment ` 实例并放入运行列表中。当 ` data ` 对象不符合
93+ ` filter ` 规则时发送不会实现。代码弹幕也要通过 ` send ` 发送,只不过它们会进一步被派发到代码
94+ 弹幕引擎。同一个 ` ICommentData ` 实例如果多次用于调用这个方法会产生多个不同的弹幕实例
95+ ` IComment ` 。
8896
89- 注意:send可以发送不在时间轴里的弹幕 。这个功能尤其利于实时弹幕的实现,因为对于直播实时弹幕,基本不
90- 需要使用时间轴 。直接把收到的弹幕 send 出去效率会高很多。
97+ 注意:` send ` 可以发送不在时间轴里的弹幕 。这个功能尤其利于实时弹幕的实现,因为对于直播实时弹幕,
98+ 基本不需要使用时间轴 。直接把收到的弹幕 ` send ` 出去效率会高很多。
9199
92100### finish(comment: IComment )
93- 完成弹幕,从舞台删除,从空间管理器里删除。更好的方法是调用 IComment的 ` finish() ` 方法。一般来说
94- IComment的finish方法会在销毁相关的对象后调用这个方法来释放管理器内占用的资源 。
101+ 完成弹幕,从舞台删除,从空间管理器里删除。更好的方法是调用 ` IComment ` 的 ` finish() ` 方法。
102+ 一般来说 ` IComment ` 的 ` finish ` 方法会在销毁相关的对象后调用这个方法来释放管理器内占用的资源 。
95103
96104## Events 事件
97- 有几个常见的方法来管理事件。
105+ 有几个常见的方法来管理事件。具体派发的事件,请参考 [ Events ] ( Events.md )
98106
99107### addEventListener(event: String , listener: Function )
100108添加监听器。
0 commit comments