[補(bǔ)檔]【人人都是字幕君 代碼彈幕初階入門教程】
轉(zhuǎn)載:9ch.co/t27615,1-1.html
作者:小包子

正文
編寫:小包子
技術(shù)顧問:面湯拌菜菌
終于坑出來了...雖然我自己找了不少打錯(cuò)的字..但是肯定還有很多.
嘛..問題肯定不少.有問題請(qǐng)跟帖.
前言
高級(jí)彈幕不難.基礎(chǔ)的部分非常簡(jiǎn)單.只需要你花上一點(diǎn)時(shí)間就可以輕松上手.重要的是需要對(duì)作品的理解以及對(duì)時(shí)間的把握.無論什么彈幕只需要一顆有愛的心就夠了.彈幕需要是愛與人參.所以我希望大家不要去使用高級(jí)彈幕去做不好的事情.
?
目錄??
?
第一章?初步了解高級(jí)彈幕
? ?? ? 1.1?變量
? ?? ? 1.2創(chuàng)建文本彈幕對(duì)象
? ?? ? 1.3?彈幕對(duì)象運(yùn)動(dòng)的設(shè)置
? ?? ? 1.4?繪圖彈幕對(duì)象創(chuàng)建以及設(shè)置
? ?? ?? ?? ???1.4.1顏色樣式設(shè)置
? ?? ?? ?? ?? ?? ?? ?1.4.1.1 beginFill?指定一種顏色進(jìn)行填充
? ?? ?? ?? ?? ?? ?? ?1.4.1.2 lineGradientStyle beginGradientFill指定一種線條樣式,填充樣式的漸變
? ?? ?? ?? ?? ?? ?? ?1.4.1.3 lineStyle?指定線條樣式
? ?? ?? ?? ???1.4.2圖形的繪制
? ?? ?? ?? ?? ?? ?? ?1.4.2.1?繪制一條直線
? ?? ?? ?? ?? ?? ?? ?1.4.2.2?繪制一條二次貝塞爾曲線
? ?? ?? ?? ?? ?? ?? ?1.4.2.3?繪制一個(gè)圓
? ?? ?? ?? ?? ?? ?? ?1.4.2.4?繪制一個(gè)橢圓
? ?? ?? ?? ?? ?? ?? ?1.4.2.5?繪制一個(gè)矩形
? ?? ?? ?? ?? ?? ?? ?1.4.2.5?繪制一個(gè)圓角矩形
?
第二章?使用其他工具
? ?? ? 2.1Utils?工具庫(kù)
? ?? ?? ?? ???2.1.1 hue將0-360的值映射到色相環(huán)
? ?? ?? ?? ???2.1.2 rgb將RGB值映射到色彩值上
? ?? ?? ?? ???2.1.3 formatTimes格式化播放時(shí)間
? ?? ?? ?? ???2.1.4 timer?延遲執(zhí)行函數(shù)
? ?? ?? ?? ???2.1.5 interval?定時(shí)重復(fù)執(zhí)行函數(shù)
? ?? ?? ?? ???2.1.6 distance?計(jì)算坐標(biāo)距離
? ?? ?? ?? ???2.1.7 rand?返回一個(gè)前閉后開的整數(shù)
? ?? ? 2.2 Function?函數(shù)的創(chuàng)建與使用
? ?? ? 2.3?播放器控制
? ?? ?? ?? ???2.3.1視頻時(shí)間跳轉(zhuǎn)至
? ?? ?? ?? ???2.3.2跳轉(zhuǎn)到指定av號(hào)指定頁視頻

第一章?初步了解高級(jí)彈幕
1.1 第一節(jié) 變量
廢話不多說.我們先來看一句最基本的彈幕.
首先一次個(gè)關(guān)鍵字是”var”.該關(guān)鍵字的意思就是聲明一個(gè)變量.變量說的簡(jiǎn)單點(diǎn)就是在后面的過程中可以給 “a” 重新賦值.
然后就是變量名”a”了,這玩意理解成名字就行了.至于關(guān)于變量名的規(guī)則有些關(guān)鍵字與保留字是不允許創(chuàng)建的.保留字,關(guān)鍵字
第三個(gè)是運(yùn)算符”=”,首先等于號(hào)并不是數(shù)學(xué)中的等于意思.而是給聲明的變量a賦值.將等號(hào)右邊的值賦予給左邊.
第四個(gè)”1”就是一個(gè)值了.結(jié)尾的分號(hào)表示該語句結(jié)束.
看到這里相信大家已經(jīng)對(duì)這句彈幕有了基礎(chǔ)的了解.這句話的意思就是:
聲明變量”a”并且初始化其值為數(shù)字1.
寫高級(jí)彈幕的時(shí)候請(qǐng)嚴(yán)格注意大小寫.
1.2 第二節(jié) 創(chuàng)建文本彈幕對(duì)象.
首先要知道bili的播放器的大小.像素為單位.
在高級(jí)彈幕中在 實(shí)際彈幕時(shí)間會(huì)在發(fā)布時(shí)間軸填寫的時(shí)間基礎(chǔ)上減去約0.2秒.所以請(qǐng)注意時(shí)間軸的問題
?
高級(jí)彈幕中創(chuàng)建新的文本彈幕對(duì)象要用到createComment("",{})這個(gè)語句.請(qǐng)看實(shí)例
該彈幕的意思就是 創(chuàng)建一個(gè)變量a并創(chuàng)建一個(gè)新彈幕對(duì)象賦于a.
我們可以這么理解createComment.他的括號(hào)內(nèi)有2個(gè)參數(shù).”text”是彈幕內(nèi)容.{x:100}是該彈幕參數(shù)x軸上的位置是100.
當(dāng)然括號(hào)內(nèi)的不可能只有x這一個(gè)參數(shù).我們可以用到的有.
那么我們來定義一個(gè)稍微復(fù)雜點(diǎn)的高級(jí)彈幕.
例:
(注:參數(shù)之間以英文逗號(hào)區(qū)分,最后一個(gè)參數(shù)結(jié)尾無逗號(hào))
大家可以預(yù)覽一下這條彈幕.就是在x軸100,y軸100的位置創(chuàng)建一個(gè)內(nèi)容是text的彈幕.該彈幕生存時(shí)間為10秒.字體大小為20號(hào).十六進(jìn)制顏色為灰色.透明度0.8.
那么.到了這里大家應(yīng)該已經(jīng)知道怎么去在一個(gè)點(diǎn)創(chuàng)建彈幕并設(shè)置該彈幕各項(xiàng)參數(shù).
接下來就來說一下在創(chuàng)建后各項(xiàng)屬性的更改與設(shè)置.
現(xiàn)在.聲明變量c并創(chuàng)建了一個(gè)彈幕內(nèi)容為"測(cè)試"的彈幕.它的x軸為50,y軸為100.
例:
那么如果我們現(xiàn)在需要讓他的位置x軸不變y軸變更到50.那么我們這個(gè)時(shí)候就需要直接更改彈幕的某一個(gè)參數(shù).只需要在彈幕后面加上.
(注:更改顏色的語句不是c.color而是c.textColor.注意大小寫)
此外還有比較常用的就是旋轉(zhuǎn)3個(gè)軸的設(shè)置.
c.rotationX,rotationY,rotationZ.
例:
設(shè)置字體:
設(shè)置光昏效果:
createGlowFilter?參數(shù)color?上例參數(shù)?0xFF0000??光暈顏色,采用十六進(jìn)制格式?0xRRGGBB。默認(rèn)值為?0xFF0000。
alpha?上例參數(shù)?1??顏色的?Alpha?透明度值。有效值為?0?到?1。例如,0.25?設(shè)置透明度值為?25%。
blurX?上例參數(shù)?16??水平模糊量。有效值為?0?到?255(浮點(diǎn))。2?的乘方值(如?2、4、8、16?和?32)經(jīng)過優(yōu)化,呈示速度比其他值更快。
blurY?上例參數(shù)?17??垂直模糊量。有效值為?0?到?255(浮點(diǎn))。2?的乘方值(如?2、4、8、16?和?32)經(jīng)過優(yōu)化,呈示速度比其他值更快。
strength?上例參數(shù)?2??印記或跨頁的強(qiáng)度。該值越高,壓印的顏色越深,而且發(fā)光與背景之間的對(duì)比度也越強(qiáng)。有效值為?0?到?255。
quality?上例參數(shù)?1??應(yīng)用濾鏡的次數(shù)。使用?BitmapFilterQuality?常量:low,middle,high
inner?上例參數(shù)false??指定發(fā)光是否為內(nèi)側(cè)發(fā)光。值?true?指定發(fā)光是內(nèi)側(cè)發(fā)光。值?false?指定發(fā)光是外側(cè)發(fā)光(對(duì)象外緣周圍的發(fā)光)。
knockout?上例參數(shù)true? ?指定對(duì)象是否具有挖空效果。值為?true?將使對(duì)象的填充變?yōu)橥该鳎@示文檔的背景顏色。
設(shè)置字體無黑邊:
另還有些參數(shù)也可以設(shè)置.詳細(xì)參考(死鏈 wiki.bilibili.tv/wiki/CommentField)
?
?
1.3?彈幕對(duì)象運(yùn)動(dòng)的設(shè)置
?
在上一個(gè)章節(jié)中學(xué)習(xí)了如何創(chuàng)建文本對(duì)象和設(shè)置文本對(duì)象的參數(shù).這次就講如何讓創(chuàng)建的彈幕對(duì)象運(yùn)動(dòng)起來.這里我們要用到motion.下面請(qǐng)看一個(gè)例子.
讓我們來分析這條彈幕.
首先上已經(jīng)了解過了createComment的用法.那么我直接來看到多出來的這個(gè)屬性motion.
?在這里面其中x為需要移動(dòng)的參數(shù).x中的fromValue是x的起始位置toValue是結(jié)束位置.lifeTime是這個(gè)運(yùn)動(dòng)過程所花費(fèi)的時(shí)間.(注:如果在motion里面x.y有起始值并且在motion外也設(shè)置x.y的值,那么將顯示motion里面的設(shè)置位置)
此外motion支持多屬性同時(shí)運(yùn)動(dòng).
例:
這次除了移動(dòng)x軸還添加了一個(gè)透明度從0到1的變化.
下面我們說一下在motion中有哪些是可以做變化的.
其中的屬性值有:
下面我們來看一個(gè)相對(duì)復(fù)雜的例子
在這個(gè)例子里面我們用到了startDelay這個(gè)屬性.我們把這個(gè)代碼拆開分了3段來看.
?
首先x軸的是從100移動(dòng)到250.移動(dòng)時(shí)間3秒.然后起始移動(dòng)時(shí)間是500毫秒.也就是說x軸是在500毫秒后開始移動(dòng)的.
然后是y軸從50移動(dòng)到250移動(dòng)時(shí)間3秒.
最后是透明度從0到1變化時(shí)間為0.5秒.重復(fù)執(zhí)行6次.
?
把這三個(gè)參數(shù)整合在一起就變成了.移動(dòng)測(cè)試從x:100,y:50的位置開始移動(dòng),并且透明度最開始是0.由于x有一個(gè)起始移動(dòng)時(shí)間.但是y軸跟透明度變化已經(jīng)開始.所以首先"移動(dòng)測(cè)試"會(huì)先漸入的向下移動(dòng).500毫秒后x開始移動(dòng)這個(gè)時(shí)候y軸的移動(dòng)還沒有停第一次的透明度改變已經(jīng)結(jié)束.所以x,y軸這個(gè)時(shí)候是同時(shí)移動(dòng)的.最后結(jié)果回是往右下移動(dòng)并且透明度會(huì)重復(fù)的從0到1..
?
雖然可以使用repeat這個(gè)屬性執(zhí)行重復(fù)的操作.但是這個(gè)是遠(yuǎn)遠(yuǎn)不能滿足復(fù)雜的移動(dòng)效果的.然而去創(chuàng)建很多motion也是很麻煩的.這里我就需要用到motionGroup了.motionGroup能執(zhí)行多個(gè)motion連續(xù)運(yùn)動(dòng).
我們來看一個(gè)實(shí)例.
以上彈幕就是使用一個(gè)組將兩個(gè)移動(dòng)連接在了一起→↓.需要注意的是motionGroup的冒號(hào)后面的是英文中括號(hào).并且每一次移動(dòng)包括透明度都最好加上lifeTime并且每一個(gè)motion中的lifeTime的時(shí)間必須一致..每一次motion之間用英文逗號(hào)相隔.最后一個(gè)結(jié)尾無符號(hào).
?
?
1.4?繪圖彈幕對(duì)象創(chuàng)建以及設(shè)置
?
使用命令:createShape
例:
首先創(chuàng)建一個(gè)新的圖形對(duì)象.里面可以設(shè)置的內(nèi)容同文本對(duì)象(位置,生存時(shí)間,透明度,運(yùn)動(dòng)設(shè)置等方法同creatComment).
?
繪圖需要使用到的:
curveTo? ??使用當(dāng)前線條樣式繪制一條二次貝塞爾曲線
drawCircle? ? ?繪制一個(gè)圓.
drawEllipse? ??繪制一個(gè)橢圓
drawRect? ??繪制一個(gè)矩形
drawRoundRect? ??繪制一個(gè)圓角矩形
lineTo? ??繪制一條直線
beginFill? ??指定一種顏色進(jìn)行填充
lineStyle? ??指定線條樣式
lineGradientStyle? ??指定一種線條樣式的漸變
beginGradientFill? ??指定一種填充樣式的漸變
我們來一個(gè)個(gè)的來了解.首先要了解的并不是怎么去繪制而是設(shè)定繪制的樣式
?
?
1.4.1顏色樣式設(shè)置
1.4.1.1 beginFill指定一種顏色進(jìn)行填充
這里用到:
beginFill? ??指定一種顏色進(jìn)行填充
在beginFill里面有2個(gè)參數(shù).第一個(gè)是十六進(jìn)制的顏色,第二個(gè)是填充的透明度(可選).
例:
這里用的一長(zhǎng)串就是設(shè)置g的填充顏色以及透明度.兩個(gè)都是有效的.
graphics則是是提供繪圖的API.以后使用的時(shí)候都會(huì)用到這個(gè).后面小括號(hào)內(nèi)就是參數(shù)了.注:graphics前面的g必須是創(chuàng)建圖形對(duì)象的名字
?
1.4.1.2 lineGradientStyle beginGradientFill?指定一種線條樣式,填充樣式的漸變
這里需要用到:
lineGradientStyle??指定一種線條樣式的漸變
beginGradientFill??指定一種填充樣式的漸變
詳細(xì)請(qǐng)看:鏈接(死鏈 wiki.bilibili.tv/wiki/Display.createGraphic.graphics#lineGradientStyle)
type?上例參數(shù)"linear"
用于指定要使用哪種漸變類型的?GradientType?類的值:GradientType.LINEAR?或?GradientType.RADIAL。
colors?上例參數(shù)[0xFF0000, 0x00FF00,0x0000FF]
要在漸變中使用的?RGB?十六進(jìn)制顏色值數(shù)組(例如,紅色為?0xFF0000,藍(lán)色為?0x0000FF?等等)。
alphas?上例參數(shù)[1,1,1]? ?
colors?數(shù)組中對(duì)應(yīng)顏色的?alpha?值數(shù)組;有效值為?0?到?100。?如果值小于?0,F(xiàn)lash?playe將使用?0。?如果值大于100,F(xiàn)lash Player?將使用?100。
Ratios?上例參數(shù)[0x00,0x7f,0xff]
顏色分布比率的數(shù)組;有效值為?0?到?255。該值定義?100%?采樣的顏色所在位置的寬度百分比。?值?0?表示漸變框中的左側(cè)位置,255表示漸變框中的右側(cè)位置。?該值表示漸變框中的位置,而不是最終漸變的坐標(biāo)空間,坐標(biāo)空間可能比漸變框?qū)捇蛘?為?colors?參數(shù)中的每個(gè)值指定一個(gè)值。
matrix?上例參數(shù)$.createGradientBox(20, 20, 0, 0, 0)
一個(gè)由?Matrix?類定義的轉(zhuǎn)換矩陣。?Matrix?類包括?createGradientBox()?方法,通過該方法可以方便地設(shè)置矩陣,以便與?beginGradientFill()?方法一起使用,亦可使用$.createGradientBox()。
createGradientBox(20, 20, 0, 0, 0)中5個(gè)數(shù)值分別是.
spreadMethod?上例參數(shù)"reflect"
用于指定要使用哪種?spread?方法的
interpolationMethod?上例參數(shù)"rgb"
用于指定要使用哪個(gè)值的?值:linearRGB?或?rgb
例如,假設(shè)有兩種顏色之間的簡(jiǎn)單線性漸變(spreadMethod?參數(shù)設(shè)置為?reflect)。
focalPointRatio?上例參數(shù)"0"
一個(gè)控制漸變的焦點(diǎn)位置的數(shù)字。?0?表示焦點(diǎn)位于中心。?1?表示焦點(diǎn)位于漸變圓的一條邊界上。?-1?表示焦點(diǎn)位于漸變圓的另一條邊界上。?小于?-1?或大于?1?的值將舍入為?-1?或?1。
實(shí)際運(yùn)用:
在實(shí)際運(yùn)用中后面幾個(gè)可以不填寫或者值為null但是其中的colors ,alphas, Ratios數(shù)組必須存在并且對(duì)應(yīng)數(shù)組長(zhǎng)度.另Ratios數(shù)組內(nèi)數(shù)值必須從小到大
?
1.4.1.3 lineStyle?指定線條樣式
這里用到:
lineStyle? ??指定線條樣式
thickness?上例參數(shù)1
一個(gè)整數(shù),以磅為單位表示線條的粗細(xì);有效值為?0?到?255。如果未指定數(shù)字,或者未定義該參數(shù),則不繪制線條。?如果傳遞的值小于?0,則默認(rèn)值為?0。?值?0?表示極細(xì)的粗細(xì);最大粗細(xì)為255。?如果傳遞的值大于?255,則默認(rèn)值為?255。
color?上例參數(shù)0x000000
線條的十六進(jìn)制顏色值(例如,紅色為?0xFF0000,藍(lán)色為?0x0000FF?等)。?如果未指明值,則默認(rèn)值為?0x000000(黑色)。?可選。
alpha?上例參數(shù)1
表示線條顏色的?Alpha?值的數(shù)字;有效值為?0?到?1。如果未指明值,則默認(rèn)值為?1(純色)。?如果值小于?0,則默認(rèn)值為?0。?如果值大于?1,則默認(rèn)值為?1。
pixelHinting?上例參數(shù)false
用于指定是否提示筆觸采用完整像素的布爾值。
scaleMode?上例參數(shù)"vertical"
用于指定要使用哪種縮放模式的?LineScaleMode?類的值:
caps?上例參數(shù)"none"
用于指定線條末端處端點(diǎn)類型的?CapsStyle?類的值。?有效值為:none、round?和?square.?如果未指示值,則?Flash?使用圓頭端點(diǎn)。
joints?上例參數(shù)"miter"??JointStyle?類的值,指定用于拐角的連接外觀的類型。?有效值為:bevel、miter?和?round。?如果未指示值,則?Flash?使用圓角連接。
miterLimit?上例參數(shù)10
一個(gè)表示將在哪個(gè)限制位置切斷尖角的數(shù)字。?有效值的范圍是?1?到?255(超出該范圍的值將舍入為?1?或?255)。
miterLimit?值:小于此角度將被切斷
例:
?
1.4.2圖形的繪制
這里用到
curveTo? ??使用當(dāng)前線條樣式繪制一條二次貝塞爾曲線
drawCircle? ??繪制一個(gè)圓.
drawEllipse? ??繪制一個(gè)橢圓
drawRect? ??繪制一個(gè)矩形
drawRoundRect? ??繪制一個(gè)圓角矩形
lineTo? ??使用當(dāng)前線條樣式繪制一條直線
moveTo? ??移動(dòng)繪畫位置到一個(gè)點(diǎn)
這里先說明繪畫位置的問題.
使用createShape命令內(nèi)參數(shù)x.y軸的位置為初始繪畫位置.
使用moveTo命令可以移動(dòng)當(dāng)前繪畫位置.
例:
移動(dòng)繪畫位置到x軸100,y軸100的位置.
?
1.4.2.1?繪制一條直線
命令:lineTo();
參數(shù):lineTo(x,y);
參數(shù)說明:
x:相對(duì)于父顯示對(duì)象的水平坐標(biāo)
y:相對(duì)于父顯示對(duì)象的垂直坐標(biāo)
例:
以上彈幕看不到直線的?因?yàn)槔L制線條之前必須設(shè)置線條樣式或者設(shè)置填充樣式繪制一個(gè)封閉圖形.
正確的使用方法:
說明:該直線繪制直線的位置并不是播放器的x:200,y:200而是相對(duì)與createShape中100,100的基礎(chǔ)上的x:200,y:200.也就是實(shí)際位置在播放器的x:300,y:300.
設(shè)置填充樣式繪制一個(gè)封閉圖形:
當(dāng)需要繪制多條不連續(xù)的直線時(shí)則需要使用到moveTo();
例:
?
1.4.2.2?繪制一條二次貝塞爾曲線
命令:curveTo();
參數(shù):curveTo(controlX,controlY,anchorX,?anchorY);
參數(shù)說明:
controlX:?指定控制點(diǎn)相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的水平位置
controlY: 指定控制點(diǎn)相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的垂直位置
anchorX:?指定下一個(gè)錨點(diǎn)相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的水平位置
anchorY:?指定下一個(gè)錨點(diǎn)相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的垂直位置
這里我們先不看例子.先來理解一下什么是控制點(diǎn),什么是錨點(diǎn).詳細(xì)請(qǐng)看圖.
以這樣一個(gè)三角來確定繪制曲線.
例:
?
1.4.2.3?繪制一個(gè)圓
命令:drawCircle ();
參數(shù):drawCircle (x,y,radius);
參數(shù)說明:
x:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的水平位置
y:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的垂直位置
radius:?圓的半徑
例:
?
1.4.2.4?繪制一個(gè)橢圓
命令:drawEllipse();
參數(shù):drawEllipse(x,y,width,height);
參數(shù)說明:
x:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的水平位置
y:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的垂直位置
width:橢圓的寬度
height:橢圓的高度
例:
?
1.4.2.5?繪制一個(gè)矩形
命令:drawRect ();
參數(shù):drawRect (x,y,width,height);
參數(shù)說明:
x:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的水平位置
y:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的垂直位置
width:矩形的寬度
height:矩形的高度
例:
1.4.2.6?繪制一個(gè)圓角矩形
命令:drawRoundRect();
參數(shù):drawRoundRect(x,y,width,height,ellipseWidth,ellipseHeight);
參數(shù)說明:
x:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的水平位置
y:?相對(duì)于父顯示對(duì)象注冊(cè)點(diǎn)的垂直位置
width:矩形的寬度
height:矩形的高度
ellipseWidth:繪制圓角的寬度.
ellipseHeight:繪制圓角的高度.
例:
至此關(guān)于繪制的圖像也基本到了一段落.這里需要說明的是在高級(jí)彈幕設(shè)置參數(shù)中都是可以先前設(shè)定的變量代替參數(shù).
例:
這樣寫是完全沒問題.文本對(duì)象也是完全可以這么使用的.
至此高級(jí)彈幕里最最基礎(chǔ)的部分也已經(jīng)告了一段落.接下來的教程中講重點(diǎn)講創(chuàng)建后具體使用方面的知識(shí).怎么運(yùn)用其他工具讓高級(jí)彈幕更上一層樓

第二章?使用其他工具
2.1Utils?工具庫(kù)
使用命令:
hue:將0-360的值映射到色相環(huán)上
rgb:將RGB值映射到色彩值上
formatTimes:格式化播放時(shí)間
delay:延遲執(zhí)行函數(shù)
interval:定時(shí)執(zhí)行函數(shù)
distance:計(jì)算座標(biāo)距離
rand:rand返回一個(gè)偽隨機(jī)數(shù)?n,其中?min <= n < max。
?
2.1.1hue將0-360的值映射到色相環(huán)上
命令:Utils.hue();
參數(shù):Utils.hue(v);
參數(shù)說明:
v:?取值范圍:一個(gè)正整數(shù). 0-360,如果超過360將自動(dòng)換成除以360后的余數(shù).例361等同與1;
例:
?
2.1.2?rgb將RGB值映射到色彩值上
命令:Utils.rgb();
參數(shù):Utils.rgb(r,g,b);
參數(shù)說明:
r: RGB中紅色的值.取值范圍:一個(gè)正整數(shù),0-255,如果超過255將自動(dòng)換成除以255后的余數(shù).
g: RGB中綠色的值.同上
b:?RGB中藍(lán)色的值.同上
例:
?
2.1.3?formatTimes格式化播放時(shí)間
命令:Utils.formatTimes ();
參數(shù):Utils.formatTimes (time);
參數(shù)說明:
time:?一個(gè)數(shù)字.格式化后將變成?00:00的文本形式.
例:
?
2.1.4?timer?延遲執(zhí)行函數(shù)
命令:timer ();
參數(shù):timer (f,time);
參數(shù)說明:
f:?要延遲執(zhí)行的函數(shù).
time:?延遲執(zhí)行的時(shí)間.以毫秒為單位.
例:
?
2.1.5?interval?定時(shí)重復(fù)執(zhí)行函數(shù)
命令:interval ();
參數(shù):interval(f,time,times);
參數(shù)說明:
f:?要延遲執(zhí)行的函數(shù).
time:?延遲執(zhí)行的時(shí)間.以毫秒為單位.
times:執(zhí)行函數(shù)的次數(shù).
例:
說明:每隔1秒繪制的圓向右移40像素.
?
2.1.6?distance?計(jì)算坐標(biāo)距離
命令:Utils.distance ();
參數(shù):Utils.distance(x1,y1,x2,y2);
參數(shù)說明:
x1:?計(jì)算起始坐標(biāo)x軸
y1:?計(jì)算起始坐標(biāo)y軸
x2:?計(jì)算結(jié)束坐標(biāo)x軸
y2:?計(jì)算結(jié)束坐標(biāo)y軸
例:
創(chuàng)建新的Point(一個(gè)點(diǎn)).
命令:$.createPoint();
參數(shù):$.createPoint(x,y);
參數(shù)說明:
x:?坐標(biāo)x軸
y:?坐標(biāo)y軸
例:
解釋:創(chuàng)建2個(gè)新的Point對(duì)象并計(jì)算坐標(biāo)距離.并繪制一條長(zhǎng)為此距離的直線.
?
2.1.7?rand?返回一個(gè)前閉后開的整數(shù)
命令:Utils.rand ();
參數(shù):Utils.rand(min,max);
參數(shù)說明:
min:?偽隨機(jī)數(shù)最小值
max:?偽隨機(jī)數(shù)最大值
例:
說明:該彈幕繪制了一個(gè)圓,然后每隔1秒重復(fù)5次將該圓相對(duì)x軸位置移動(dòng)到30-500中隨機(jī)位置.
?
?
2.2 Function?函數(shù)的創(chuàng)建與使用
?
函數(shù)在高級(jí)彈幕中有著至關(guān)緊要的作用.在今后的運(yùn)用中是一個(gè)必不可少的存在.
函數(shù)就是定義一套對(duì)應(yīng)規(guī)則.使得集合A的元素對(duì)應(yīng)到另一個(gè)集合B的唯一元素.
?
函數(shù)具有一下特性:
1.擁有輸入和輸出兩組數(shù)據(jù).
2.函數(shù)定義了一套對(duì)應(yīng)規(guī)則,該規(guī)則是固定的,也就是函數(shù)的行為是固定的.
3.某一輸出值擁有唯一的輸出值.
?
我們下面直接來看函數(shù)語句在高級(jí)彈幕中的用法.
上面就是一個(gè)最基本的函數(shù).在每函數(shù)語句中包含著3個(gè)要素:
函數(shù)名:上例參數(shù)fname
用來作為函數(shù)引用標(biāo)識(shí).
參數(shù):上例參數(shù)(pa1,pa2)
一組用小括號(hào)括起來的一組數(shù)據(jù),參數(shù)之間用逗號(hào)分隔.函數(shù)可有空參數(shù).
函數(shù)體:上例參數(shù){trace(pa1+pa2);}
是實(shí)現(xiàn)函數(shù)功能的代碼,代碼用大括號(hào)括起來,在使用函數(shù)時(shí)將執(zhí)行代碼.
?
那么這個(gè)例子中的函數(shù)就是定義一個(gè)名為fname的函數(shù).函數(shù)體是輸出pa1+pa2.
另在函數(shù)的里面是可以創(chuàng)建函數(shù)的.但是在函數(shù)內(nèi)創(chuàng)建的函數(shù)不能與外面的函數(shù)重名.
?
那么我們來看下面這個(gè)例子:
上面就完整的寫明了函數(shù)的創(chuàng)建到使用.這里使用函數(shù)更加簡(jiǎn)便的使用了創(chuàng)建文本彈幕.方便多次使用.
這里需要注意的是在函數(shù)里面創(chuàng)建的變量是不能在函數(shù)外面使用的.更多詳細(xì)的內(nèi)容會(huì)在以后說到.
?
?
2.3?播放器控制
使用命令:
Player.seek();
Player.jump(,);
?
2.3.1視頻時(shí)間跳轉(zhuǎn)至
命令:Player.seek();
參數(shù):Player.seek(offset);
參數(shù)說明:
offset:要在視頻文件中移動(dòng)到的時(shí)間近似值(以毫秒為單位).
詳細(xì)請(qǐng)看(死鏈 wiki.bilibili.tv/wiki/Player#seek)
例:
?
2.3.2跳轉(zhuǎn)到指定av號(hào)指定頁視頻
命令:Player.jump();
參數(shù):Player.jump(av,page,.newwindow);
參數(shù)說明:
av:要跳轉(zhuǎn)視頻的av號(hào)碼.
page:要跳轉(zhuǎn)視頻的第幾頁.
newwindow:是否打開新窗口跳轉(zhuǎn)
? ? 值為 flase為不打開.值為true打開.不填寫默認(rèn)值打開
例:

.
在這里只說明了基礎(chǔ)的運(yùn)用.有時(shí)間我會(huì)寫進(jìn)階運(yùn)用方法.
如果有什么不懂的可以把問題發(fā)送到我郵箱301082782@qq.com?.
其實(shí)說實(shí)話我也是一個(gè)半吊子.教程可能有很多地方有問題.所以歡迎大家積極的指出來.
那么~高級(jí)彈幕初階教程到此結(jié)束

正文完,部分修改
好復(fù)雜啊。。。只能看懂一部分QAQ