###### tags: `PLAYONE 文件` # Voice Room ## Coordinator 1. 產生語音房所需的 ViewController, ViewModel 2. 產生各個 API Bridge,集合給語音房的 ViewModel,再依顯示的畫面提供給該 ViewController, ViewController's Subview 的 ViewModel 使用(例如顯示成員資料卡片時,有成員資料卡片使用的 API Bridge,當點擊該成員彈跳出該畫面時,語音房的 ViewModel 則丟給該畫面的 ViewModel 使用) 3. 管理 ViewController 需要與其他 ViewController 的溝通(例如返回、跳下一頁、縮小視窗)  補 2 範例  ## ViewController 主畫面 -> VoiceRoomViewController 因為畫面上會有各種 Subview 呈現,為了避免需求增加時,畫面交錯雜亂,所以需要做管理,管理方式依照下面敘述 主畫面包含四個基本的 View 順序分別是 Basic, Alert, Full screen 及 Gift,再依照 Subview 種類加到這四個畫面上 1. VoiceRoomBasicViewContainer(語音房常駐功能,例如顯示房主、座位、聊天內容及輸入框等等) 2. VoiceRoomAlertViewContainer(提示視窗,例如新訊息提示、公告內容等等) 3. VoiceRoomFullScreenContainer(需要呈現滿版畫面的功能,例如個人資訊卡片、語音房成員列表、選擇表情視窗等等) 4. VoiceRoomFullScreenAnimationView(禮物、進場特效、座駕)  因為 2 在畫面上可能會有重疊的問題,所以 VoiceRoomAlertViewContainer 會去繼承 SortableViewContainer 元件,管理每個 View 顯示的層級,例如目前所做的分層為下列 newMessageView = 0 gashaponEntrance = 1 announcement = 2 firstCharge = 3 數字越大越上層,可蓋住數字小的 View  ## ViewModel 主要會建立語音房用的 socket 以及各個 View 需要的 ViewModel,再分別丟給各個畫面去處理該畫面所需要的資料,例如座位畫面自己處理收到的資料  語音房 ViewModel 建立座位畫面(VoiceRoomSeatView)的 ViewModel(VoiceRoomSeatViewModel) 去獨立處理控制座位畫面  縮小畫面(SmallVoiceChatView)的時候,會把語音房基本資料(VoiceRoomCommonInfo)保留丟給 SmallVoiceChatView,並把語音房移除,SmallVoiceChatView 並另外建立 socket 監聽語音房的狀態,例如收到語音房關閉時的處理及通知,當再次打開語音房時,再依保留的基本資料去建立語音房。 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up