下載地址:https://github.com/linsendear/LSDrawTest
錄制腳本:
播放腳本:
這個(gè)demo參考了下面兩個(gè)項(xiàng)目
https://github.com/WillieWu/HBDrawingBoardDemo
https://github.com/Nicejinux/NXDrawKit
也針對(duì)這兩個(gè)demo做了相應(yīng)的優(yōu)化
結(jié)構(gòu):由上至下
1思币、最上層的UIView(LSCanvas)
使用CAShapeLayer休傍,提高繪制時(shí)的效率
2幔翰、第二層的UIImageview是用來合成LSCanvas用的
這樣畫很多次的時(shí)候,也不會(huì)占用很高的cpu
3胁黑、第三層是UIImageview比驻,是用來放背景圖的
關(guān)于錄制腳本:
1哮肚、//linyl標(biāo)記的代碼都是跟錄制腳本和繪制腳本相關(guān)
2凸丸、錄制后需要重新跑程序,因?yàn)檫@只是個(gè)demo
還需要優(yōu)化的地方:
1纸淮、在不同設(shè)備上平斩,需要根據(jù)畫板比例調(diào)整point和線寬等(或者固定畫板大小)咽块。
2绘面、當(dāng)前的記錄方式是用歸檔的方式,每次有動(dòng)作(撤銷侈沪,重做揭璃,保存,清空)和每次的touchsend
后亭罪,都會(huì)記錄成一個(gè)LSDrawPackage對(duì)象瘦馍。如果想使用socket傳輸時(shí),可以改為每0.5秒一個(gè)LSDrawPackage對(duì)象
应役,也就是說情组,每個(gè)LSDrawPackage對(duì)象都是一段時(shí)間內(nèi)的繪制和操作。(還有一種做法是傳送圖片或關(guān)鍵幀箩祥,但這時(shí)候需要評(píng)估網(wǎng)絡(luò)能力院崇,還有繪制的感覺也不一樣)
3、線程處理
demo中使用的是performselector的方式袍祖,還需要優(yōu)化底瓣。
4、當(dāng)前的繪制端和顯示端公用了很多的內(nèi)部結(jié)構(gòu)蕉陋。
PS:
1捐凭、沒使用drawrect
2、使用橡皮擦?xí)r凳鬓,cpu占用率還是非常高柑营。
3、近期沒有更新計(jì)劃了村视。如果做socket傳輸?shù)臅r(shí)候,包大小酒奶,結(jié)構(gòu)還有很大的優(yōu)化空間蚁孔。