Skip to content

Commit d8fde4d

Browse files
committed
Update the docs
1 parent 6ec5d55 commit d8fde4d

17 files changed

Lines changed: 474 additions & 300 deletions

docs/CommentCoreLibraryAPI.md

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -74,43 +74,3 @@ functions along with their usage will be defined below. `CommentManager` 会暴
7474
will be output if the difference in time is positive and falls below a
7575
threshold. 这个方法设置了CommentManager的播放时间,单位是毫秒(0.001s),所有在上一个
7676
time 调用到现在的弹幕都会被输出,前提是两次时间差是正数且低于一个限度。
77-
78-
CommentFilter (弹幕过滤器)
79-
----
80-
The comment filter is an object that determines if a comment should be displayed
81-
or not depending on its initializing data. It can also control how running
82-
comments are displayed. 弹幕过滤器会根据弹幕信息判对一个弹幕是否显示,当然也可以控制弹幕运行的
83-
方式。
84-
85-
* `doValidate ( CommentData comment )`
86-
This method validates the comment data against a list of filters. It returns
87-
true if the comment is displayed, false if it should be hidden.
88-
89-
* `addRule ( Rule filterRule )`
90-
This method adds a rule into the filter engine.
91-
92-
Rule Definitions:
93-
94-
Rule {
95-
"mode": int/string comment_mode,
96-
"operator": string <comment_filter_operator>,
97-
"subject": string <comment_property>,
98-
"value": primitive <value>
99-
}
100-
101-
For modes, it can be any of [these modes](CommentTypes.md) or 'all'.
102-
Operators can be any of:
103-
* Equality operators : = , ==, eq, equals
104-
* Comparison operators : < , >
105-
* Inequality operators : !=, ineq
106-
* Regular expression match : matches, regex, ~ (or inversly) notmatch, iregex, !~
107-
* Range operators : range
108-
109-
* `addModifier ( function modifier ( CommentData cd ) )`
110-
This method adds a modifier that given comment data returns a modified version
111-
of the comment data.
112-
113-
* `setRuntimeFilter ( function filter ( Comment c ) )`
114-
This method is run every time any element is moved animated. It has access
115-
to the comment's state. You can only set ONE runtime filter for the comments
116-
as setting this greatly influences speed.

docs/CommentFilter.md

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,27 @@
33
弹幕过滤器是一套简便的弹幕过滤系统,可以用来调整用户显示的弹幕信息。目前版本的弹幕过滤器提供
44
了很多功能来辅助过滤弹幕。
55

6+
在创建了 CommentManager 对象并初始化后,过滤器可以通过 `CommentManager.filter` 访问。
7+
在文档内,将会用 `filter` 对象来表示 `CommentFilter` 的一个实例。
8+
69
注意:过滤器在 `send()` 之前执行,所以通过 `send()` 派发的弹幕将不会通过 CommentFilter。
10+
这同时表示直播弹幕等基于 `send()` 实现弹幕发送的方法不会直接自动调用弹幕过滤器。如果希望过滤
11+
这些弹幕,需要手动调用过滤
12+
13+
## 手动调用过滤器 Invoking Filter
14+
过滤器的 `doValidate` 方法用于判断弹幕是否应该被过滤,手动进行过滤只需把检测的弹幕送入
15+
`filter.doValidate(cmt)` 即可。`true` 表示通过了过滤,这样则可以继续派发到 `send`
716

817
## 过滤器语法 Filter Syntax
918
过滤器有两种方式过滤,其中基础过滤是模式黑/白名单而高级过滤列表是基于一系列规则的。
1019

1120
### 模式过滤 Mode Switches
12-
模式过滤可以通过设置 `allowTypes` 选择显示或者抛弃的 mode 类型。`allowUnknownTypes`
13-
决定了列表外的类型默认处理方法(默认允许还是默认拒绝)
21+
模式过滤可以通过设置 `allowTypes` 选择显示或者抛弃的 mode 类型。默认配置下,mode
22+
`1,2,4,5,6,7,8,17` 都是被允许的。如果需要过滤掉某个模式的弹幕(比如滚动弹幕 `1`),只要把
23+
`allowTypes` 对应的属性设成 `false` 即可。
24+
25+
设置 `allowUnknownTypes` 可以决定列表外的类型默认处理方法(默认允许还是默认拒绝)。当设置为
26+
`true`时,`allowTypes`内未定义操作的弹幕将被放行,否则默认进行过滤。
1427

1528
### 高级过滤列表 Advanced Rule List
1629
高级过滤列表通过一系列规则过滤弹幕,每一个规则形式如下:
@@ -38,5 +51,40 @@
3851
- Value: (Target value) 规则目标参考值
3952
根据 OP 的取值,可能代表不同含义
4053
- Mode: (Rule mode) 规则类型
41-
- `accept`: 匹配规则才可放行
42-
- `reject`: 匹配规则会被舍弃
54+
- `accept`: 匹配规则才可放行(白名单)
55+
- `reject`: 匹配规则会被舍弃(黑名单)
56+
57+
示例:只显示文字长度为 20 以内的滚动弹幕,且弹幕中不允许一个连续的词出现超过3次,则可以添加
58+
如下两个规则:
59+
60+
````JavaScript
61+
var rule1 = {
62+
"subject": "",
63+
"op": "and",
64+
"value": [
65+
{
66+
"subject": "text.length",
67+
"op": "<",
68+
"value": 20,
69+
},
70+
{
71+
"subject": "mode",
72+
"op": "=",
73+
"value": 1,
74+
}
75+
],
76+
"mode": "accept"
77+
};
78+
var rule2 = {
79+
"subject": "text",
80+
"op": "~",
81+
"value": "(.{2,})\1{2,}",
82+
"mode": "reject"
83+
}
84+
````
85+
86+
### 添加/删除规则 Adding/Removing Rules
87+
规则可以通过 `addRule()` 添加规则,同时通过 `removeRule()` 删除添加了的规则。规则实例
88+
可以通过 `filter.rules` 查询。
89+
90+
## 复杂

docs/CommentManager.md

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# 弹幕管理器 CommentManager
2-
弹幕管理器自 `v1.0` 后将改成支持多种多层渲染的模式了,在此之前请先参考一些[不完整的API实现](CommentCoreLibraryAPI.md)
2+
弹幕管理器自 `v1.0` 后将改成支持多种多层渲染的模式了,在此之前请先参考一些
3+
[不完整的API实现](CommentCoreLibraryAPI.md)
34

45
## Properties 属性
56

@@ -14,11 +15,14 @@
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 &lt;Bool&gt;
20-
管理器的弹幕是否在运行。`false`表示没有在运行,`true`表示在运行。可以通过 start/stop 控制。这
21-
个参数只反映运行列表里面弹幕的运行状态,而不是视频的。
24+
管理器的弹幕是否在运行。`false` 表示没有在运行,`true` 表示在运行。可以通过 start/stop
25+
控制。这个参数只反映运行列表里面弹幕的运行状态,而不是视频的。
2226

2327
### width &lt;Number&gt;
2428
舞台的长度像素值,用于计算弹幕位置。此数只有在 init 之后才有效。
@@ -28,9 +32,12 @@
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&lt;ICommentData&gt;)
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

Comments
 (0)