參考視頻
http://www.imooc.com/video/12261
1.需要一個顯示彈幕的view的類(里面包括彈道、彈幕狀態的block回調、彈幕的內容、彈道的圖片、開始、結束動畫的方法等),需要一個繼承自NSObject的工具類(包括數據源數組、運行過程中的已顯示彈幕的數據數組,存儲彈幕的數組,開始、結束的方法等),統一管理彈幕。
2.一般需要實現的業務邏輯有:
1)每個彈幕都有自己的彈道,彈道需要隨機分配。
2)彈幕從右邊屏幕到左邊屏幕勻速移出的動畫,使用UIView的animation動畫即可實現。一般會有彈幕越長,移動速度越快的需求。
彈幕移動的距離已知(屏幕的寬,彈幕自身的寬),只需要將每個彈幕的時間設置為一樣的,距離除以時間,即可使每個彈幕移動速度不一樣。
3)當一個彈幕完全進入屏幕之后,可以在該彈道后面追加彈道,及從數據模型的數組中,取出新一條的數據,創建新的彈道的view.
注意:這個地方需要使用延遲動畫的方法,如果使用UIView的延遲動畫,后面停止彈幕的時候,取消動畫會出現問題,所以這里需要使用performSelector delay這個方法,后面停止的時候,調用NSObject 的cancel開頭的一個方法。
4)當一個彈幕完全移出屏幕之后,需要將該彈幕移除。
5)停止彈幕 :需要將存有彈幕的數組清空,停止每個彈幕的動畫。
6)循環播放彈幕:在工具類中寫一個外部接口的方法,當調用這個方法時,將之前保存在數組中的彈幕清空,重新創建彈幕即可。當所有彈幕都移出屏幕時,調用這個方法
7)可以在彈幕的前邊添加圓形圖片,用於顯示用戶的頭像。
8)彈幕的狀態一共分為三種,進入,完全進入,完全移出,可以在彈幕的view類中定義一個枚舉,有三種狀態,根據彈幕不同的狀態,回調給工具類,工具類根據不 同的狀態進行相應的處理。