程序大作戰(zhàn),萌出一臉血!
非常開心生平所寫的第一篇博客就獲得了廣泛的贊譽,還有幸登上了編輯推薦,看來不僅是程序人生寂靜歡喜,博客生涯也是歲月靜好??!在此還是把本人的杰作高掛:《程序人生的寂靜歡喜》,高調(diào)還是要有的,萬一紅了呢?你說是吧?
一. 引子
大家眼里的程序首先是這樣的:
- namespace OMCS.Passive
- {
- // 摘要:
- // 多媒體設備管理器基礎接口。用于管理本地的所有多媒體設備。
- public interface IMultimediaManager : IDisposable
- {
- //
- // 摘要:
- // 是否根據(jù)音頻反饋以及視頻丟幀情況自動調(diào)整視頻編碼質量。
- bool AutoAdjustCameraEncodeQuality { get; set; }
- //
- // 摘要:
- // 掉線后,是否自動重連。
- bool AutoReconnect { get; set; }
- //
- // 摘要:
- // 語音視頻聊天組入口。
- IChatGroupEntrance ChatGroupEntrance { get; }
- //
- // 摘要:
- // 是否將話筒采集到的音頻輸出給Guest。
- bool OutputAudio { get; set; }
- //
- // 摘要:
- // 是否將桌面圖像輸出給Guest。默認值為true。
- bool OutputDesktop { get; set; }
- //
- // 摘要:
- // 是否將攝像頭集到的視頻輸出給Guest。 默認值為true。
- bool OutputVideo { get; set; }
- //
- // 摘要:
- // 當通道繁忙時,采取的視頻幀(來自攝像頭)丟棄模型。默認值為DiscardWhenNeed。
- FrameDisardedMode VideoFrameDisardedMode { get; set; }
- //
- // 摘要:
- // 剛剛從話筒采集的音頻幀。
- event CbGeneric<byte[]> AudioCaptured;
- //
- // 摘要:
- // 剛剛播放的音頻幀。
- event CbGeneric<byte[]> AudioPlayed;
- //
- // 摘要:
- // 與多媒體服務器建立連接,并初始化本地多媒體管理器。 如果與服務器連接失敗,將拋出網(wǎng)絡異常。
- void Initialize(string userID, string password, string serverIP, int serverPort);
- //
- // 摘要:
- // 和目標用戶之間是否打通了P2P通道?
- bool IsP2PChannelExist(string destUserID);
- }
- }
可是你并不會知道他們在我眼里其實是這樣的——
二.程序大作戰(zhàn)
1.所謂的:“ OMCS 多媒體管理器,用于管理本地的所有多媒體設備。” 其實就是這個意思:
2.所謂的布爾類型的屬性,其實就是一個個開關嘛,像這樣:
2.所謂方法,其實就是一個個按鈕,就像這樣:
3.所謂事件,其實就是一個個插槽,就像這樣:
4、所謂的布爾類型的只讀屬性,其實就是一個個指示燈,就像這樣:
5.另外四個連接器可以就像這樣:
三.萌出一臉血
最后,將這個零件全部組裝起來,就成為了一個 OMCS 客戶端了。是不是很萌呢?
運用形象化的思維,我們可以把原本很抽象枯燥,條分縷析的代碼,變得鮮活、生動而又富有趣味,大家在理解程序的時候也可以借鑒一下哦。