[搬運(yùn)]彈幕藝術(shù)聯(lián)合文檔-彈幕涂鴉系統(tǒng)
轉(zhuǎn)自:biliscript-syndicate.github.io
標(biāo)題:彈幕涂鴉系統(tǒng)
作者:nekofs
日期:2013年02月26日

我比較好奇,一個合作代碼彈幕項(xiàng)目,會按怎樣的過程進(jìn)行下來,會經(jīng)歷多少情況。偶然一句話,產(chǎn)生了兩周的工作,《彈幕涂鴉系統(tǒng)》。以下是Xarple與我的合作項(xiàng)目制作日志。

(標(biāo)記:(x): Xarple;(n): nekofs)
2013-02-14 21:02:17
如果在播放器上搞個涂鴉發(fā)送的話,類似百度貼吧的涂鴉,能夠直接畫圖并發(fā)送,那樣的話倒是個不錯的方法。
2013-02-15 可行性調(diào)研,產(chǎn)品分析,項(xiàng)目計(jì)劃
一大堆涂鴉在那里飄過好像不是特別有趣味,找一個趣味點(diǎn),這個有點(diǎn)難??从袥]有視頻內(nèi)容吧,沒有的話就搞個類似標(biāo)簽云那樣的涂鴉云,一大堆涂鴉,不明覺厲。
這個價值在于觀眾突然有了一種新工具,會好玩一陣子。
難度在于怎么管理調(diào)度,一片亂糟糟全部蓋上了,或者是縮小到看不清是啥。把圖儲存到隊(duì)列里,延遲發(fā)送,每一定時間規(guī)定最多只能有N副飄過,控制厚度,遮擋檢測?
2013-02-16 實(shí)現(xiàn)原型1:傳輸編解碼1(n),實(shí)現(xiàn)原型2:筆觸矢量化算法,三次貝塞爾擬合算法,界面,圖形數(shù)據(jù)結(jié)構(gòu)(x),規(guī)范內(nèi)部接口
2013-02-17 完成傳輸編解碼1(n),修訂圖形數(shù)據(jù)結(jié)構(gòu)(x),實(shí)現(xiàn)界面(x)
因?yàn)檎{(diào)度制度的問題導(dǎo)致視頻放完還有一大部分涂鴉沒放完怎么辦:就現(xiàn)在普通彈幕的處理方式也可以,不太多就調(diào)整之避免遮擋,如果太多也管不過來。
2013-02-18 性能分析(n),優(yōu)化(x),完成界面(x)
?優(yōu)化:不再重復(fù)擬合已經(jīng)確定的曲線段
?優(yōu)化:不再重復(fù)計(jì)算弧長積分
?優(yōu)化:使用Array.slice()避免循環(huán)
?(未實(shí)施)優(yōu)化:主要渲染和計(jì)算放到enterFrame還是mouseMove?
結(jié)果:放在enterFrame圖形會跳變不連續(xù);性能壓力下兩者無實(shí)際區(qū)別。主要性能問題是Linux下鼠標(biāo)事件過頻繁。
2013-02-19 優(yōu)化(x)
?優(yōu)化:不再重繪已經(jīng)確定的圖形。
?(未實(shí)施)優(yōu)化:不計(jì)算因節(jié)點(diǎn)數(shù)過短而結(jié)果可預(yù)測的弧段
結(jié)果:因?yàn)長inux與Windows下事件處理模式相反,Windows下丟失事件保證延遲(因此必須計(jì)算短節(jié)點(diǎn)數(shù)弧段),Linux下保證事件增加延遲。
2013-02-20 重寫:傳輸編解碼2(n),自測(n),協(xié)議實(shí)驗(yàn)(n)
2013-02-21 完成彈幕調(diào)度算法(x)
?最終用什么視頻?沒有想法。曲包/作業(yè)用BGM
2013-02-22 QA(n),UI/UX(x),修bug(x)
2013-02-23 QA(n),修bug(x)
2013-02-24 開場制作(x),QA(n),修bug(x)
2013-02-25 特效渲染(x),壓制(x)
2013-02-26 上傳(x),發(fā)布測試(n,x),QA通過(n)
2013-02-27 發(fā)布(x)

已完成任務(wù)
BUG: []問題
修復(fù)。BUG: Linux Flash鼠標(biāo)事件太頻繁劣化性能。重現(xiàn):隨便打開一個視頻不播放,在上面晃動鼠標(biāo),cpu即滿載。
無法修復(fù)。BUG: 0x01-0x19間的碼字會被轉(zhuǎn)換成空格
修復(fù):重寫傳輸組件。原因:XML標(biāo)準(zhǔn)規(guī)定NT-Char := #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]BUG: 無法同時顯示多條弧線
修復(fù)。原因:整個Stage只能同時擁有24個有scrollRect的Bitmap
BUG: 操作一段時間后界面陰影filter自動消失
修復(fù)。原因:scrollRect把顯示列表撐破了,所以不渲染filter了。BUG:進(jìn)度條變化導(dǎo)致操作還原
修復(fù)。BUG:無法通過點(diǎn)擊播放器中間控制視頻播放/暫停
修復(fù):.mouseEnabled = false。BUG: TextField跨平臺baselineShift不一致。
無法修復(fù)。BUG: 復(fù)制按鈕缺少顏色研所表示控制狀態(tài),用戶無法有效使用
修復(fù):不能復(fù)制的時候顯示暗色、不顯示鼠標(biāo)動畫。BUG: 進(jìn)度條變化導(dǎo)致控制點(diǎn)輔助信息殘留
修復(fù)。FEAT: UI/UX調(diào)整
完成。FEAT: ByteArray壓縮
不實(shí)現(xiàn)。測試發(fā)現(xiàn)無實(shí)際效果。BUG: load()語法?
BUG: 關(guān)閉所有trace調(diào)試信息
修復(fù)。BUG: 說明中應(yīng)具有版本信息
修復(fù)。BUG: 無法處理多于3個涂鴉同時出現(xiàn)在同一縱行的情況,3個涂鴉被等距分布,其他涂鴉全部疊在一處
修復(fù)。FEAT: 阻止用戶復(fù)制涂鴉數(shù)據(jù)重復(fù)發(fā)送
不修復(fù)。測試未發(fā)現(xiàn)性能可行性問題。FEAT: 可用空間為負(fù)的時候應(yīng)該給復(fù)制按鈕顯示成灰色表示禁止復(fù)制
修復(fù)。FEAT: 調(diào)度器不解析mode,用戶無法通過選擇模式來控制涂鴉運(yùn)動方式(mode4底部固定;mode5頂部固定)
修復(fù)。FEAT: 顯示涂鴉信息以便up主管理
修復(fù)。BUG: 啟動時未處理已經(jīng)在$.root列表里的彈幕
修復(fù)。BUG: importExtendLibrary : err TypeError: Error #1009
修復(fù)。BUG: mode4/5初始化時沒有處理
修復(fù)。BUG: 進(jìn)度條變化后界面混亂/進(jìn)度條變化導(dǎo)致閃過混亂界面
討論seek判定條件,重現(xiàn):在0秒處不斷拉回0秒
NOTOURBUG: 播放器本身具有此問題
解決方法:ScriptManager.popEl()
修復(fù)。FEAT: 界面把mode4彈幕擋住了。所有mode4彈幕在顯示界面時.y -= 10。
不修復(fù)。用戶自己可以用“防止擋字幕”。FEAT: 用戶友好地處理libBitmap加載失敗的狀況。
完成。FEAT: libBitmap超時后再加載成功拒絕繼續(xù)執(zhí)行
完成。FEAT: loading畫面至少保持1秒
完成。FEAT: 開場彈幕隱藏(.alpha=0.1;)
完成FEAT: 首次啟動時應(yīng)該顯示啟動畫面附帶使用說明
完成。改成制作開場。TODO: 測試視頻結(jié)束后再開始是否工作正常
完成。

當(dāng)前任務(wù)

計(jì)劃任務(wù)
TODO: 列舉出[]問題的多種重現(xiàn)方法。(使用assert()檢查?)
TODO: 關(guān)鍵方法有安全性問題。看影響程度與站方開發(fā)協(xié)商擴(kuò)展API:點(diǎn)擊輸入框填入自動建議內(nèi)容。
FEAT: 數(shù)據(jù)分片重組傳輸克服字?jǐn)?shù)限制,需要UI合理設(shè)計(jì)
下一版實(shí)現(xiàn)。FEAT: 減少$.root依賴
FEAT: 重構(gòu),使用.cacheAsBitmap = true
FEAT: 重構(gòu),使用MotionManager進(jìn)行調(diào)度
BUG: 初始化后未顯示已經(jīng)處理的涂鴉彈幕
細(xì)節(jié),以后修復(fù)。
