# 弹幕生成范围的相关方法 注:这里的范围指的是弹幕在容器中所在**高度的范围**。 * [Demo](https://ndanmaku.xbottle.top/#限定弹幕生成范围) ## 目录 * [此处可设置的弹幕类型](#此处可设置的弹幕类型) * [弹幕堆叠的正方向是什么](#弹幕堆叠的正方向是什么) * [弹幕生成范围和弹幕堆叠方向的关系](#弹幕生成范围和弹幕堆叠方向) * [设置弹幕生成范围的方法](#设置弹幕生成范围的方法) `ranges()` * [方法特点](#方法特点) * [keyOrObject](#keyorobject) * [valueArr](#valuearr) * [重置所有弹幕生成范围的方法](#重置所有弹幕生成范围的方法) `resetRanges()` ## 此处可设置的弹幕类型 | 弹幕类型(键) | 默认生成范围|说明 | 弹幕堆叠的正方向 | |:---:|:---:|:---:|:---:| |`top`|`[0, 70]`|顶部弹幕 | 自上向下 | |`bottom`|`[0, 70]`|底部弹幕 | **自下向上** | |`scroll`|`[0, 100]`|所有**除随机弹幕外的**滚动弹幕(包括逆向的)的统称| 自上向下 | |`random`|`[0, 100]`|所有随机滚动弹幕(包括逆向的)的统称| 自上向下 | ### 弹幕堆叠的正方向是什么 这是我脑袋一热想出的说法,要解释的话就举些例子吧: * 顶部弹幕创建的时候,第一条在最顶部,第二条距顶部远了一点,第三条距顶部比第二条还远。 视觉上来说,弹幕是**自上向下**在“堆叠”的。 * 底部弹幕创建的时候,第一条在最底部,第二条距底部远了一点,第三条距底部比第二条还远。 视觉上来说,此时弹幕是**自下向上**在“堆叠”的。 ------ ### 弹幕生成范围和弹幕堆叠方向 弹幕生成范围就是**基于弹幕堆叠方向**来算的,这里还是举两个例子: * 假如我设置**顶部弹幕**的生成范围是`[20,70]`,实际上意味着顶部弹幕只能在**自容器顶部**`20%`至`70%`的**高度**之间生成。 * 假如我设置**底部弹幕**的生成范围是`[30,80]`,就意味着底部弹幕只能在**自容器底部**`30%`至`80%`的**高度**之间生成。 ------ ## 设置弹幕生成范围的方法 ```javascript danmaku.ranges(keyOrObject, valueArr = null) ``` * `keyOrObject` - 代表弹幕类型的键 或 包含**生成范围键值对**的对象 * `valueArr` - 区间数组(在第一个参数为**代表弹幕类型的键**的情况下有效) ------ ### 方法特点 和属性[`danmaku.attrs()`](attributes.md#方法特点)方法的一样,是可以继承之前的配置的。 ------ ### keyOrObject 这个参数取值可以是一串**字符串**,代表待设置的**弹幕类型**;或者是一个包含**生成范围键值对**的对象。 > 此处可用的“弹幕类型”见[上方](#此处可设置的弹幕类型)。 仍然是举个栗子: 当这个参数为**字符串**的时候: ```javascript danmaku.ranges('top',[20, 70]) ``` 当这个参数为**包含键值对**的对象的时候: ```javascript danmaku.ranges({ 'bottom': [30, 80], 'scroll': [20, 70] }) ``` ------ ### valueArr * 默认值: `null` (无值) * 示例见[keyOrObject](#keyorobject)的 这个参数的取值是一个**代表闭区间**的数组,其中第一个数组元素代表**起始高度百分比**,第二个数组元素代表**结束高度百分比**。 当`keyOrObject`为**字符串**的时候,这个参数是必需的。 ------ ## 重置所有弹幕生成范围的方法 ```javascript danmaku.resetRanges() ``` 这个方法没有参数,会重置所有弹幕类型的生成范围为默认值。 默认值详见[上方](#此处可设置的弹幕类型)。