版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p> iOS下視頻點播App設(shè)計與實現(xiàn)</p><p><b> 摘 要</b></p><p> 蘋果iOS是蘋果開發(fā)的手持設(shè)備操作系統(tǒng)。蘋果公司最早于
2、2007年1月9日的Macworld大會上發(fā)布這個系統(tǒng),最初設(shè)計給iPhone使用,后來陸續(xù)套用到iPod touch、iPad以及Apple TV等蘋果產(chǎn)品上。</p><p> 近年來,隨著iphone和廣泛應(yīng)用,使許多企業(yè)發(fā)現(xiàn),手機業(yè)務(wù)價值,促使越來越多的人開始學(xué)習(xí)開發(fā)手機。蘋果手機軟件基于Object_C編程語言編程Xcode的環(huán)境下發(fā)展。手機軟件分為許多類型,包括視頻類手機軟件有很高的地位在手機軟件的
3、發(fā)展。</p><p> 本文基于iOS開發(fā)平臺設(shè)計并且實現(xiàn)了一款手機視頻App,展示如何通過利用Object_C 的工具函數(shù)實現(xiàn)對視頻的各種處理。論述了視頻的播放,異步下載以及斷點播放。</p><p><b> 關(guān)鍵字:</b></p><p> 視頻播放 Dota Object_C </p><p>
4、<b> Abstract</b></p><p> Apple iOS is the development of handheld devices operating system.Apple as early as January 9,2007 the Macworld conference this system,originally designed for use in iP
5、hone,subsequently applied to the iPod touch,Apple,and Apple products such as Apple TV.</p><p> In recent years, with the iphone and it is widely used, make many businesses found that mobile phone on busines
6、s value, prompting more and more people begin to learn the development on mobile phones. Apple mobile phone software based on Object_C programming language under the environment of Xcode development programming. Mobile p
7、hone software is divided into many types, including video class mobile phone software have the very high status in the development of mobile phone software.</p><p> This article is based on the iOS(Internet
8、working Operation System) is designed and implemented a mobile video App, shows how to use Object_C tool function on video processing. Discusses the video playback, asynchronous download and breakpoint.</p><p&
9、gt;<b> Keywords</b></p><p> Video Display Dota Object_C</p><p><b> 目錄</b></p><p><b> 第一章 緒論5</b></p><p> 1.1 iOS系統(tǒng)概述5&
10、lt;/p><p> 1.2 iOS系統(tǒng)的構(gòu)架5</p><p> 1.2.1 Cocoa Touch層5</p><p> 1.2.2 Media 層6</p><p> 1.2.3 Core Services層6</p><p> 1.2.4 Core OS層6</p><p&
11、gt; 1.3 Object_C的介紹6</p><p> 第二章 總體設(shè)計8</p><p> 2.1 系統(tǒng)各個功能模塊總體設(shè)計8</p><p> 2.2 iOS的View的生命周期9</p><p> 第三章 詳細(xì)設(shè)計11</p><p> 3.1 基礎(chǔ)類設(shè)計11</p>&
12、lt;p> 3.2 項目所需系統(tǒng)類庫13</p><p> 3.3 第三方SDK13</p><p> 3.4 App運行首頁面14</p><p> 3.4.1 視頻解說14</p><p> 3.4.2 視頻解說詳情頁面16</p><p> 3.4.3 視頻播放17</p>
13、;<p> 3.5 視頻緩存18</p><p><b> 3.6 直播20</b></p><p> 3.7 Dota2 英雄介紹和物品介紹21</p><p> 3.7.1 Dota2 英雄介紹21</p><p> 3.7.2 Dota2 物品的介紹24</p>&l
14、t;p><b> 3.8 設(shè)置26</b></p><p> 3.9系統(tǒng)測試28</p><p> 3.9.1 功能模塊測試28</p><p> 3.9.2 功能整體測試28</p><p> 第四章 結(jié)論和致謝29</p><p><b> 緒論</
15、b></p><p> 1.1 iOS系統(tǒng)概述</p><p> iOS操作系統(tǒng)是iPhont、ipod touch以及iPad設(shè)備的核心。</p><p> 構(gòu)架iOS平臺的知識與Mac OS X系統(tǒng)同出一轍,iOS平臺的許多開發(fā)工具和開發(fā)技術(shù)也源自Mac OS X,都是以UNIX為基礎(chǔ)。但開發(fā)者無需具備Mac OS X的開發(fā)經(jīng)驗就可以編寫iOS的應(yīng)
16、用程序。iPhone軟件開發(fā)包(SDK)為著手創(chuàng)建iOS應(yīng)用程序提供所需要的一切。</p><p> 1.2 iOS系統(tǒng)的構(gòu)架</p><p> iOS架構(gòu)和Mac OS的基礎(chǔ)架構(gòu)相似。站在高級層次來看,iOS扮演底層硬件和應(yīng)用程序的中介。創(chuàng)建的應(yīng)用程序不能直接訪問硬件,而需要和系統(tǒng)接口進(jìn)行交互。系統(tǒng)接口轉(zhuǎn)而又去和適當(dāng)?shù)尿?qū)動打交道。這樣的抽象可以防止應(yīng)用程序改變底層硬件。iOS實現(xiàn)可
17、以看作是多個層的集合,底層為所有應(yīng)用程序提供基礎(chǔ)服務(wù),高層則包含一些復(fù)雜巧妙的服務(wù)和技術(shù)。</p><p> 圖1-1 iOS的層</p><p> 1.2.1 Cocoa Touch層</p><p> Cocoa Touch層提供了基本的系統(tǒng)行為支持,而且將你的工作量降到最低,當(dāng)你想要實現(xiàn)更為復(fù)雜的行為和界面時,才考慮向下層探尋技術(shù)支持。</p&g
18、t;<p> UIKit框架:UIKit提供了一些程序運行所必須的關(guān)鍵對象,使得App能夠捕捉用戶輸入和在屏幕上顯示內(nèi)容</p><p> MapKit框架:iOS3.0引入該框架,該框架提供一個可被嵌入到應(yīng)用程序的地圖界面,該界面包含一個可以滾動的地圖視圖</p><p> Address Book UI框架:iOS3.0引入該框架,可以利用該框架撰寫電子郵件,并將其
19、放入到用戶的發(fā)件箱排隊等候發(fā)送</p><p> Message UI框架:顯示創(chuàng)建或者編輯聯(lián)系人的標(biāo)準(zhǔn)系統(tǒng)界面</p><p> 1.2.2 Media 層</p><p> 包含圖形、音頻、視頻等技術(shù)。</p><p> Quartz Core框架:包含Core Animation 是高級動畫制作和混合技術(shù),它使用經(jīng)過優(yōu)化的渲染路
20、徑實現(xiàn)復(fù)雜的動畫和視覺效果</p><p> Media Player框架:應(yīng)用程序播放視頻和音頻內(nèi)容</p><p> AV Foundation框架:該框架包含的Object_C類可用于播放音頻內(nèi)容</p><p> Core Graphics框架:(CoreGraphics.framework)包含Quartz 2D繪圖API接口。該框架基于C接口,提供
21、繪圖功能</p><p> 1.2.3 Core Services層</p><p> 應(yīng)用程序提供基礎(chǔ)系統(tǒng)服務(wù)。可能應(yīng)用程序并不直接使用這些服務(wù)。但它們是系統(tǒng)很多部分懶以建構(gòu)的基礎(chǔ)。</p><p> Foundation框架:為Core Foundation框架的許多功能提供Object_C封裝</p><p> Core Fou
22、ndation框架:是一組C語言接口,它們?yōu)閕OS應(yīng)用程序提供基本數(shù)據(jù)管理和服務(wù)功能</p><p> Core Location框架:可用于定位某個設(shè)備經(jīng)緯度</p><p> 其他框架:CFNetWork框架、Core Data框架、Core Media框架、Core Telephony框架、Event Kit框架、Mobile Core Services框架、Quick Look
23、框架、Store Kit框架、System Configuration框架</p><p> 1.2.4 Core OS層</p><p> Core層的底層功能是很多其他技術(shù)的構(gòu)建基礎(chǔ)。通常情況下,這些功能不會直接應(yīng)用與應(yīng)用程序,而是應(yīng)用與其他框架。但是,在直接處理安全事務(wù)或和某個外設(shè)通訊的時候,則必須要應(yīng)用到該層框架</p><p> Accelerate
24、框架:iOS4.0引入了Accelerate框架,該框架的接口可用于執(zhí)行數(shù)字、大數(shù)字以及DSP算法</p><p> External Accessory框架:iOS3.0引入了External Accessory框架,通過它來支持iOS設(shè)備與綁定附件通信。附件可以通過一個30針的基座接口和設(shè)備連接,也可以通過藍(lán)牙連接</p><p> Security框架:iOS系統(tǒng)不但提供內(nèi)建的安
25、全功能,還提供Security框架用于保證應(yīng)用程序所管理之?dāng)?shù)據(jù)的安全。該框架提供的接口可用于管理證書、公鑰、私鑰以及信任策略。它支持生成加密的安全偽隨機數(shù)。同時,它也支持對證書和Keychain迷藥進(jìn)行保存,是用戶敏感數(shù)據(jù)的安全倉庫</p><p> 1.3 Object_C的介紹</p><p> Objective-C是非常“實際”的語言。它使用一個用C寫成、很小的運行庫,只會令應(yīng)
26、用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時間會取代了整個系統(tǒng)的運作相反,ObjC寫成的程序通常不會比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個窗口的情況相反。</p><p><b> 擴展的關(guān)鍵字:</b></p><p> @interface,類型聲明,類似于c++中的class,區(qū)
27、別在于Object c中的聲明與實現(xiàn)是強制分開的,@interface關(guān)鍵字用于類型的聲明,包括數(shù)據(jù)成員、方法聲明、屬性等。方法的參數(shù)傳遞采用中綴符的形式,利用“:”分割參數(shù)名和被傳遞參數(shù),類型的聲明以@interface開頭,以@end結(jié)束。</p><p> @implementation,對應(yīng)于@interface的類型聲明,@implementation表示一個類型的實現(xiàn)過程,同樣以@end結(jié)束。<
28、;/p><p> @class,是一個前向引用聲明,類似于C++中的friend友元聲明,其作用是告訴編譯器其后面的字段代表一個類型名稱,盡管不知道類型的具體實現(xiàn),但是只需要將其作為一個類型名稱處理即可。通常在使用復(fù)合的結(jié)構(gòu)時可以采用@class來減少頭文件的相互引用,如果出現(xiàn)循環(huán)依賴,則需要依靠@class來避免引用的死循環(huán)。</p><p> @property,提供了外界對成員變量的
29、訪問接口,其本質(zhì)是為某一個屬性提供set和get操作。</p><p> @synthesize,與@property對應(yīng),將一個外在屬性與成員變量相關(guān)聯(lián),定義在 @implementation中,如果屬性名與變量名一致則可以省略變量名。</p><p> Object_C采用引用計數(shù)的方法進(jìn)行內(nèi)存管理,由于所有的對象都集成與NSObject,因此所有的對象都可以接受NSObject的
30、三個方法:</p><p> retain方法將對象的引用計數(shù)加一并返回該對象,release將引用計數(shù)減一,retainCount方法返回對象當(dāng)前的引用計數(shù)。當(dāng)采用new、alloc、copy方法創(chuàng)建一個對象時,它的引用計數(shù)被置為1,如果程序中對該對象進(jìn)行操作,則應(yīng)根據(jù)需要,通過調(diào)用retain和release方法來保證該對象在不需要的時候被清除。當(dāng)一個對象的引用計數(shù)被置為0后,系統(tǒng)會自動向?qū)ο蟀l(fā)送一個dea
31、lloc消息,將其占有的資源釋放。通常情況下,如果一個對象的初始化過程調(diào)用了其他資源,則應(yīng)該重寫改對象的dealloc過程,保證在對象的銷毀期正確釋放這些資源。</p><p> 類別是為現(xiàn)有的類提供一個新的方法的方法,即使沒有一個類的源代碼,仍然可以向類中添加一個方法以方便使用。類別的主要目的有3個:將類的實現(xiàn)分散到多個不同的文件或框架中,創(chuàng)建對私有方法的前向引用,向?qū)ο筇砑臃钦絽f(xié)議。</p>
32、<p> Object C中的協(xié)議類似于java中的接口,通過@protocol關(guān)鍵字定義一個或多個需要遵從協(xié)議的對象實現(xiàn)的方法。</p><p><b> 總體設(shè)計</b></p><p> 2.1 系統(tǒng)各個功能模塊總體設(shè)計</p><p> iOS開發(fā)是基于Object_C語言,使用iOS SDK在Xcode開發(fā)環(huán)境下進(jìn)
33、行開發(fā),其應(yīng)用與iOS系統(tǒng)的移動設(shè)備上,本課題主要是本地應(yīng)用,加入少量網(wǎng)絡(luò)解析和分享功能。</p><p> 2.1.1 功能總體設(shè)計</p><p> 根據(jù)系統(tǒng)功能分析,可以分為五大模塊:視頻解說、視頻緩存、直播、Dota2、設(shè)置。</p><p> 圖2-1 功能總體設(shè)計圖</p><p> 2.1.2 主要頁面設(shè)計</p&
34、gt;<p> 頁面一覽表顯示出了本程序的主要頁面以及設(shè)計的類名,概要的描述了頁面的主要功能。</p><p> 表 2-1-2 頁面一覽表</p><p> 2.1.3功能一覽表</p><p> 功能一覽表顯示出了項目的主要功能的實現(xiàn),以及所需技術(shù)或所需添加的第三方SDK,簡要的描述了功能概要。</p><p>
35、表 2-1-3 功能一覽表</p><p> 2.2 iOS的View的生命周期</p><p> ViewController的職責(zé),對內(nèi)管理與之關(guān)聯(lián)的View,對外跟其他的ViewController通信和協(xié)調(diào)。對于與之關(guān)聯(lián)的View,ViewController總是在需要的時候才加載視圖,并在不需要的時候卸載視圖,所以也同時擔(dān)當(dāng)了管理應(yīng)用資源的責(zé)任。理解ViewControlle
36、r的生命周期,能夠有效的管理應(yīng)用資源,ViewController的生命周期圖:</p><p> 圖2-2 UIView生命周期圖</p><p><b> 第三章 詳細(xì)設(shè)計</b></p><p><b> 3.1 基礎(chǔ)類設(shè)計</b></p><p> 基礎(chǔ)類中設(shè)計了一些公用方法功能
37、,以及一些界面的實例化,主要有網(wǎng)絡(luò),網(wǎng)絡(luò)監(jiān)測,頁面坐標(biāo)大小設(shè)置。</p><p><b> 微信分享</b></p><p> 微信分享,存在Dota2模塊中的英雄詳情頁面和物品詳情頁面,英雄詳情頁面,主要分享英雄的圖片以及英雄的簡介,而物品詳情頁面分享的是物品的圖片以及物品的簡介,分享到微信朋友圈,沒有設(shè)置鏈接。</p><p><
38、;b> 網(wǎng)絡(luò)監(jiān)測</b></p><p> 網(wǎng)絡(luò)監(jiān)測,監(jiān)測有沒有網(wǎng)絡(luò),如果沒有網(wǎng)絡(luò)則網(wǎng)絡(luò)不請求數(shù)據(jù),只要有網(wǎng)絡(luò)不管是3G還是Wifi都進(jìn)行網(wǎng)絡(luò)請求。</p><p> 3.2 項目所需系統(tǒng)類庫</p><p> CoreGraphicss.framework</p><p> (CoreGraphics.frame
39、work)包含Quartz 2D繪圖API接口。該框架基于C接口,提供繪圖功能。所有Xcode創(chuàng)建的工程都自帶的一個類庫。</p><p> Foundation.framework 和 UIKit.framework</p><p> ios中,Cocoa的框架中最重要最基本的兩個框架是Foundation和UIkit,和界面無關(guān)的基本類的屬于Foundation框架,UIKit框架
40、是和界面相關(guān)的。 </p><p> 3)AVFoundation.framework</p><p> 該框架包含的Object_C類可用于播放音頻內(nèi)容。</p><p> 4)QuartzCore.framework</p><p> Quartz核心框架(QuartzCore.framework)包含CoreAnimatio
41、n接口,Core Animation是一種高級動畫和合成技術(shù)。</p><p> MediaPlayer.framework</p><p> 用于視頻的播放框架。</p><p> Libsqlite3.dylib</p><p><b> 數(shù)據(jù)庫的框架。</b></p><p> 7
42、)MobileCoreServices.framework;</p><p> Mobile Core Services 框架 iOS 3.0引入了Mobile Core Services框架 (MobileCoreServices.framework)。此框架定義統(tǒng)一類型標(biāo)識符 (UTIs)使用的底層類型。</p><p> 8)CFNetwork.framework;</p
43、><p> CFNetwork 只是對 BSD socket 的進(jìn)行了輕量級的封裝,但在 iOS 中使用 CFNetwork 有一個顯著的好處,那就是 CFNetwork 與系統(tǒng)級別的設(shè)置(如:天線設(shè)置)以及 run-loop 結(jié)合得很好。每一個線程都有自己的 run-loop,因此我們可以 CFNetwork 當(dāng)中事件源加入到 run-loop 中,這樣就可以在線程的 run-loop 中處理網(wǎng)絡(luò)事件了。BTW,
44、大名鼎鼎的 ASIHttpRequest 庫就是基于 CFNetwork 封裝的。</p><p> 3.3 第三方SDK</p><p> 數(shù)據(jù)庫解析 FMDB</p><p> 微信分享 libWeChatSDK.a,WXApi.h,WXApiObject.h </p><p> 網(wǎng)絡(luò)監(jiān)測 Reachability
45、</p><p> 3.4 App運行首頁面</p><p> 3.4.1 視頻解說</p><p> 圖 3-4-1-1 視頻解說人員列表</p><p> 首頁面是整個程序的根視圖,可以進(jìn)入功能界面,并包括整個程序的設(shè)置頁面,點擊頁面中最下面的圖標(biāo)可以進(jìn)入別的頁面。</p><p> 表3-4-1-2 頁
46、面參數(shù)、功能表</p><p> 表3-4-1-3 頁面動作事件表</p><p><b> 關(guān)鍵代碼:</b></p><p> UITabBar創(chuàng)建關(guān)鍵代碼:</p><p> NSString *path = [[NSBundle mainBundle]pathForResource:@"Data
47、_TabBar" ofType:@"plist"]; //設(shè)置plist文件的路徑</p><p> NSDictionary*dic=[NSDictionarydictionaryWithContentsOfFile:path]; //把plist文件轉(zhuǎn)為字典</p><p> NSMutableArray *controllerArray =
48、[[NSMutableArray alloc]init]; //初始化可變數(shù)組</p><p> for (int i = 0; i < dic.count; i ++) //遍歷字典</p><p><b> {</b></p><p> NSString* key = [NSString stringWithFormat:@&
49、quot;item %d",i];</p><p> NSDictionary* dict = [dic objectForKey:key];</p><p> NSString *className = [dict objectForKey:CLASS_NAME_KEY];</p><p> Class class = NSClassFromStr
50、ing(className);</p><p> if (class) {</p><p> RootViewController *rvc = [[class alloc]initWithDictionary:dict];</p><p> UINavigationController *nc = [[UINavigationController alloc
51、]initWithRootViewController:rvc];</p><p> [controllerArray addObject:nc]; //把導(dǎo)航條添加到數(shù)組中</p><p><b> }</b></p><p><b> }</b></p><p> UITabBarCo
52、ntroller *tbc = [[[UITabBarController alloc]init]autorelease];//初始化TabBar</p><p> tbc.viewControllers = controllerArray; </p><p> self.window.rootViewController = tbc; //把TabBar添加到底層頁面上</p
53、><p> 視頻解說跳轉(zhuǎn)視頻詳情頁面代碼:</p><p> VideoItem *item = [self.mDataArray objectAtIndex:indexPath.row];</p><p> VideoDetailViewController *vdvc = [[VideoDetailViewController alloc]init];<
54、/p><p> vdvc.uid = item.id;//傳參</p><p> vdvc.name = item.name;</p><p> [vdvc setHidesBottomBarWhenPushed:YES]; //</p><p> [self.navigationController pushViewControlle
55、r:vdvc animated:YES];//頁面跳轉(zhuǎn)</p><p> 3.4.2 視頻解說詳情頁面</p><p> 圖 3-4-2-1 視頻解說詳情頁面</p><p> 視頻解說詳情頁面實現(xiàn)上拉加載,可以瀏覽此解說的所有近期視頻。</p><p> 表3-4-2-2 視屏解說詳情頁面參數(shù)、功能表</p><
56、p> 表3-4-2-3 視頻解說詳情頁面動作事件表</p><p><b> 關(guān)鍵代碼:</b></p><p> if (scrollView.contentOffset.y + scrollView.frame.size.height </p><p> >= scrollView.contentSize.height)
57、 {</p><p> if (isRefresh == NO) {</p><p> isRefresh = YES;</p><p> _currentPage += 10;</p><p> NSString *url = [NSString stringWithFormat:</p><p> Vid
58、eo_Detail_Url,_uid,_currentPage];</p><p> [[LCHttpManager sharedManager] addGetTask:url </p><p> Tag:Video_Detail_tag]; //網(wǎng)絡(luò)請求</p><p> [self addMessage:url selector:@selector(upd
59、ateData:)];</p><p><b> }</b></p><p><b> }</b></p><p> 3.4.3 視頻播放</p><p> 圖 3-4-3-1 視頻播放</p><p> 主要是視頻播放功能。</p><p>
60、; 表3-4-3-2 視頻播放頁面參數(shù)、功能表</p><p> 表3-4-3-3 視頻播放頁面動作事件表</p><p><b> 關(guān)鍵代碼:</b></p><p> AVURLAsset* asset = [AVURLAsset assetWithURL:url];</p><p> [asset loa
61、dValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler:^{</p><p> AVKeyValueStatus status = [asset statusOfValueForKey:@"tracks" error:nil];</p><p&
62、gt; if (status == AVKeyValueStatusLoaded) {//判斷狀態(tài)</p><p> AVPlayerItem*playerItem= [AVPlayerItem playerItemWithAsset:asset];</p><p> _player = [[AVPlayer alloc]initWithPlayerItem:playerItem];
63、</p><p> [_playerView setPlayer:_player];//關(guān)聯(lián)播放器和屏幕</p><p> [_player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_queue_create(0, 0) usingBlock:^(CMTime time){//設(shè)置進(jìn)度 CMTi
64、me 幀數(shù) 幀率</p><p> CMTime currentTime = _player.currentItem.currentTime;//當(dāng)前時間</p><p> CMTime duration = _player.currentItem.duration;</p><p> if (CMTimeGetSeconds(duration) >
65、0.0) {</p><p> Float pro= CMTimeGetSeconds(currentTime)/CMTimeGetSeconds(duration);//進(jìn)度</p><p> dispatch_async(dispatch_get_main_queue(), ^{</p><p> [_proSilder setValue:pro anim
66、ated:YES];</p><p> [_playerViewTop.timeLabel reloadInputViews];</p><p><b> });</b></p><p><b> }</b></p><p><b> }</b></p>
67、<p><b> 3.5 視頻緩存</b></p><p> 3-8-1 視頻緩存頁面</p><p> 視頻緩存是緩存視頻下載完成以及沒有完成的下載管理頁面。</p><p> 表3-5-1-2 視頻緩存頁面參數(shù)、功能表</p><p> 表3-5-1-3 視頻緩存頁面動作事件表</p>
68、<p><b> 關(guān)鍵代碼:</b></p><p> - (void)removeAllUser{</p><p> BOOL res = [_db open]; //打開數(shù)據(jù)庫</p><p> if (res == NO) {</p><p> NSLog(@"打開失敗"
69、);</p><p><b> }</b></p><p> FMResultSet* set = [_db executeQuery:@"select * from User"]; //通過用戶名刪除所有數(shù)據(jù)庫</p><p> while ([set next]) { //遍歷刪除</p><p
70、> NSString *titleName = [set stringForColumn:@"titleName"];</p><p> if (titleName) {</p><p> res = [_db executeUpdate:@"delete from User where titleName = ?",titleName]
71、;</p><p><b> }</b></p><p><b> }</b></p><p><b> 3.6 直播</b></p><p> 3-6-1 直播的列表</p><p> 表3-6-2 直播列表參數(shù)、功能表</p>
72、<p> 表3-6-3 直播頁面動作事件表</p><p> ?。ㄖ辈ヒ曨l播放同視頻播放頁面的播放)</p><p> 3.7 Dota2 英雄介紹和物品介紹</p><p> 3-7-1 Dota2的列表</p><p> 3.7.1 Dota2 英雄介紹</p><p> 圖 3-7-1-1
73、Dota2英雄介紹</p><p> 主要把英雄分為3中類型:力量英雄、敏捷英雄、智力英雄??梢渣c擊任意Cell查看</p><p> 表3-7-1-2 英雄列表頁面參數(shù)、功能表</p><p> 表3-7-1-3 英雄列表頁面動作事件表</p><p> 圖 3-7-1-4 Dota2英雄的詳細(xì)介紹</p><p
74、> 英雄的初始屬性,英雄的背景介紹以及英雄的技能的冷卻時間,技能各個等級的傷害。</p><p> 表3-7-1-5 英雄詳情列表頁面參數(shù)、功能表</p><p> 圖3-7-1-6 英雄詳情列表頁面動作事件表</p><p><b> 關(guān)鍵代碼:</b></p><p> 自適應(yīng)Cell的代碼:<
75、/p><p> HeroItem *item = [self.mDataArray objectAtIndex:0];</p><p> CGSize size = [item.bio sizeWithFont:[UIFont systemFontOfSize:18.0]</p><p> constrainedToSize:CGSizeMake(300, 10
76、00) </p><p> lineBreakMode:UILineBreakModeCharacterWrap];</p><p> return size.height + 30;//自適應(yīng)每個Cell的高</p><p><b> 分享代碼:</b></p><p> WXMediaMessage *mes
77、sage = [WXMediaMessage message];</p><p> HeroItem *item = [self.mDataArray objectAtIndex:0];</p><p> message.title = item.bio; //把英雄背景簡介添加到消息中</p><p> [message setThumbImage:[UI
78、Image imageNamed:item.u]]; //把圖品添加到消息中</p><p> WXWebpageObject *ext = [WXWebpageObject object];</p><p> ext.webpageUrl = @"www.baidu.com"; //測試鏈接</p><p> message.media
79、Object = ext;</p><p> SendMessageToWXReq* req = [[[SendMessageToWXReq alloc] init]autorelease];</p><p> req.bText = NO;</p><p> req.message = message;</p><p> req.s
80、cene = WXSceneTimeline;</p><p> [WXApi sendReq:req];</p><p> 3.7.2 Dota2 物品的介紹</p><p> 圖 3-7-2-1 Dota2物品的介紹</p><p> 模仿Dota2中物品商店的道具擺放。可以左右、上下拖動。</p><p>
81、; 圖 3-7-2-2 Dota2物品的詳細(xì)介紹</p><p> 詳細(xì)介紹了每個道具的名稱、所需價格以及具體的作用。比如:蝴蝶這個道具就是攻擊以及閃避為一體的極品道具。</p><p> 表3-7-2-3 物品頁面參數(shù)、功能表</p><p> 表3-7-2-4 物品頁面動作事件表</p><p><b> 關(guān)鍵代碼:&
82、lt;/b></p><p><b> JSON解析代碼:</b></p><p> NSString *path = [[NSBundle mainBundle]pathForResource:@"item" </p><p> ofType:@"json"];</p><
83、;p> NSURL *url = [NSURL fileURLWithPath:path];</p><p> NSString *jsonStr = [NSString stringWithContentsOfURL:url </p><p> encoding:NSUTF8StringEncoding error:nil];</p><p> NS
84、Data *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; </p><p> NSDictionary *dict = [NSJSONSerialization JSONObject</p><p> WithData:jsonData options:0 error:nil];</p><
85、;p><b> 分享代碼:</b></p><p> (與上面的英雄分享類似)</p><p><b> 3.8 設(shè)置</b></p><p> 對系統(tǒng)進(jìn)行設(shè)置,可以查看工程所占的空間,以及剩余空間,可以查詢Dota在11對戰(zhàn)平臺的天梯分?jǐn)?shù)和天梯相關(guān)的數(shù)據(jù)??梢园l(fā)送反饋意見,給我評分等一系列功能。</p
86、><p> 圖 3-8-1 設(shè)置頁面介紹</p><p> 表3-8-2 設(shè)置頁面參數(shù)、功能表</p><p> 圖3-8-3 設(shè)置頁面動作事件表</p><p><b> 關(guān)鍵代碼:</b></p><p> - (NSNumber *)freeDiskSpace //檢測空閑內(nèi)存的空間
87、大小</p><p><b> {</b></p><p> NSDictionary *fattributes = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];</p><p> return [fattributes obj
88、ectForKey:NSFileSystemFreeSize];</p><p><b> }</b></p><p> - (NSNumber *)totalDiskSpace //檢測總的內(nèi)存的空間大小</p><p><b> {</b></p><p> NSDictionary *
89、fattributes = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];</p><p> return [fattributes objectForKey:NSFileSystemSize];</p><p><b> }</b></p>
90、<p><b> 3.9系統(tǒng)測試</b></p><p> 系統(tǒng)測試時保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵步驟,是對系統(tǒng)開發(fā)過程中的系統(tǒng)分析、系統(tǒng)設(shè)計以及實施的最后復(fù)查。根據(jù)測試的概念和目的,進(jìn)行信息系統(tǒng)測試。</p><p> 3.9.1 功能模塊測試</p><p> 在視頻播放模塊,測試視頻播放是否流暢,是否能夠進(jìn)行播放。<
91、;/p><p> 在解析Json中,數(shù)據(jù)是否可以從網(wǎng)絡(luò)獲取,以及回調(diào)數(shù)據(jù)是否回調(diào)成功。</p><p> 上拉刷新,下拉加載是否實現(xiàn)功能。</p><p> 在完成逐個模塊測試后,開始對系統(tǒng)進(jìn)行驗收測試,運行該系統(tǒng),在運行過程中查找出現(xiàn)的錯誤</p><p> 3.9.2 功能整體測試</p><p> 在安裝好
92、配置環(huán)境的電腦上測試,剛開始出現(xiàn)出現(xiàn)屏幕混亂,經(jīng)過反復(fù)修改,現(xiàn)在已經(jīng)能正常播放視頻。用Xcode上自帶的監(jiān)測內(nèi)存工具Instrument ,檢測出多處內(nèi)存泄露問題,都已修改。最后經(jīng)過反復(fù)測試,修改,基本功能實現(xiàn)。</p><p><b> 第四章 結(jié)論和致謝</b></p><p><b> 結(jié)論</b></p><p&g
93、t; 本次畢業(yè)設(shè)計的主要方向是視頻播放及在iOS環(huán)境下實現(xiàn)。在整個畢業(yè)設(shè)計過程中,我既學(xué)到了許多知識,同時又鍛煉了自己的實際動手能力。但由于本人水平有限在整個過程中不可避免地遇到了各種各樣的問題,而且還存在著許多不足之處??偨Y(jié)起來有以下幾點:</p><p> 對iOS開發(fā)環(huán)境的基本知識和使用方法有了一定的了解和掌握。尤其是基于Object_C的應(yīng)用程序框架,它是進(jìn)行彩色圖像處理的關(guān)鍵。</p>
94、<p> 對視頻處理的內(nèi)容有了更加深入的認(rèn)識。</p><p> 由于能力所限在程序開發(fā)過程中遇到了很多問題,使得系統(tǒng)在進(jìn)行操作時受限。</p><p><b> 下一步規(guī)劃:</b></p><p> 實現(xiàn)邊下載.看以及Dota2物品合成功能以及英雄推薦裝.和對每個英雄的加點。</p><p>
95、通過這次的課程論文,我深深的感受到了自身的不足。 </p><p><b> 教訓(xùn)反思: </b></p><p> (1).學(xué)習(xí)與實踐的結(jié)合不當(dāng)。當(dāng)我進(jìn)行程序開發(fā)的時候,發(fā)現(xiàn)以前學(xué)習(xí)的知識點到用時卻忘得一干二凈了,也只好重新學(xué)習(xí)基本知識了。如果以前把知識學(xué)得透徹點,理解深刻點,也許在開發(fā)過程中可以縮短時間,提高效率。反思自我,歸其原因:不是當(dāng)
96、時的學(xué)習(xí)不夠認(rèn)真,而是缺乏對知識點的運用實踐;對于像我這樣“半路出家”的編程人員來說,只是理解知識點是遠(yuǎn)遠(yuǎn)不夠的,如果當(dāng)時沒有經(jīng)過編譯、運行、調(diào)試的過程,很快就會忘記的。 </p><p> (2).學(xué)習(xí)目標(biāo)不專一。我們都知道在學(xué)習(xí)的時候是最忌諱這個還沒學(xué)明白就去學(xué)那個的,結(jié)果當(dāng)然是哪個也沒學(xué)明白。這個沒學(xué)好,就想用另一個,造成學(xué)習(xí)不深入,學(xué)習(xí)效果不好。以后一點要記住此教訓(xùn)。</p>&
97、lt;p><b> 致謝</b></p><p> 踉踉蹌蹌地忙碌了幾個月,本設(shè)計在劉博老師的悉心指導(dǎo)和嚴(yán)格要求下已完成。由于能力和時間的關(guān)系,總是覺得有很多不盡人意的地方,譬如功能不全、外觀粗糙等問題??墒?,我又會有點自戀式地安慰自己:做一件事情,不必過于在乎最終的結(jié)果,可貴的是過程中的收獲。這次做論文的經(jīng)歷也會使我終身受益,我感受到做論文是要真真正正用心去做的一件事情,是真正的
98、自己學(xué)習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研究的能力,沒有自己的研究,就不會有所突破,那也就不叫論文了。希望這次的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵我繼續(xù)進(jìn)步。</p><p> 本設(shè)計在劉博老師的悉心指導(dǎo)和嚴(yán)格要求下業(yè)已完成,從課題選擇、方案論證到具體設(shè)計和調(diào)試,無不凝聚著劉老師的心血和汗水,在四年的本科學(xué)習(xí)和生活期間,也始終感受著導(dǎo)師的精心指導(dǎo)和無私的關(guān)懷,我受益匪淺。在此向劉博老師表示深深的感謝和崇高的敬意。
99、</p><p> 不積跬步何以至千里,本設(shè)計能夠順利的完成,也歸功于各位任課老師的認(rèn)真負(fù)責(zé),使我能夠很好的掌握和運用專業(yè)知識,并在設(shè)計中得以體現(xiàn)。正是有了他們的悉心幫助和支持,才使我的畢業(yè)論文工作順利完成,在此向,計算機系的全體老師表示由衷的謝意。感謝他們四年來的辛勤栽培。</p><p><b> 參考文獻(xiàn) </b></p><p
100、> [1] Dave Mak(美) Jack Nutting(美) Jeff LaMarche(美)著.楊越 孫文磊等譯.ios5基礎(chǔ)教程[M].北京:人民郵電出版社. 2013:3 </p><p> [2] Mark Dalrymple(美) Scott Knaster(
101、美)著.楊越 等譯.Objective-C基礎(chǔ)教程[M].北京:人民郵電出版社. 2012:7 </p><p> [3] Stephen G.Kochan 著.林翼 范俊 朱奕欣 譯.Objective-C程序設(shè)計(第四版)[M].北京:電子工業(yè)出版社,2012:12 </p><p>
102、 [4] 虞斌著. Ios軟件開發(fā)揭秘:iPhone&iPad企業(yè)應(yīng)用和游戲開發(fā)[M].北京:電子工業(yè)出版社,2011:1. </p><p> [5] 克萊爾(美)著.李強譯.Objective-C2.0Mac和ios開發(fā)實踐指南[M].北京:機械工業(yè)</p><p> 出版社,2011:1. </p>
103、;<p> [6] Brian W.Kernighan ,Deninis M Rirchie(美)著,徐寶文,李志(譯)The C Programming Language[M].北京:機械工業(yè)出版社2003:2. </p><p> [7] 徐松林,黃猛著.cocos2D-x手機游戲開發(fā)[M].
104、北京:人民郵電出版社. </p><p> [8] Ron patton(美)著.王鈺,曹躍譯.軟件測試[M].北京:機械工業(yè)出版社,2006:4. </p><p> [9] 王水著.軟件工程[M].河南:河南科學(xué)技術(shù)出版社,2008:8. </p><p> [10] 吳潔明著.軟件工程
105、實例教程[M].北京:清華大學(xué)出版社,2010:11. </p><p> [11] 郭東恩著.數(shù)據(jù)庫原理及應(yīng)用[M].河南:河南科學(xué)技術(shù)出版社,2008:4. </p><p> [12] Dan Pilone著.Head First iPhone Development[M].北京:東南大學(xué)出版社,20
106、12:1. </p><p> [13] 薩丹著.iPhone開發(fā)秘籍[M].北京:人民郵電出版社,2010:1. </p><p> [14] 喬納森(美)著.AppStore掘金[M].北京:人民郵電出版社,2010:1. </p><p> [15] 哈靈頓(美)著.iOS 4實戰(zhàn)[M
107、].北京:人民郵電出版社,2012:1. </p><p> [16] 王志剛.編著應(yīng)用程序開發(fā)攻略之iPhone特色傳感器應(yīng)用[M].北京:電子工業(yè)出版</p><p> 社,2011:2. </p><p> [17] Gene Backlin(美)著.岳紅 凌沖譯.iPhone&am
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ios下視頻點播app設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-視頻點播系統(tǒng)的設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-視頻點播系統(tǒng)的設(shè)計與實現(xiàn) 2
- 軟件工程畢業(yè)論文-視頻點播器---后臺管理的設(shè)計
- 畢業(yè)論文——視頻點播系統(tǒng)的設(shè)計與實現(xiàn)
- 視頻點播系統(tǒng)的設(shè)計與實現(xiàn)——畢業(yè)論文
- 視頻點播軟件系統(tǒng)的設(shè)計與實現(xiàn).pdf
- 在線視頻點播系統(tǒng)——畢業(yè)論文
- 畢業(yè)設(shè)計論文-視頻點播系統(tǒng)
- 基于web的視頻點播系統(tǒng)畢業(yè)論文
- 畢業(yè)論文范文——在線視頻點播系統(tǒng)
- 畢業(yè)設(shè)計---在線視頻點播系統(tǒng)設(shè)計與實現(xiàn)
- 畢業(yè)論文范文——在線視頻點播系統(tǒng)
- 畢業(yè)設(shè)計--視頻點播系統(tǒng)
- 畢業(yè)論文范文——在線視頻點播系統(tǒng)
- 視頻點播系統(tǒng)的軟件設(shè)計和實現(xiàn).pdf
- 畢業(yè)設(shè)計--視頻點播系統(tǒng)
- 畢業(yè)設(shè)計---視頻點播系統(tǒng)
- 軟件工程畢業(yè)論文-黨務(wù)cms系統(tǒng)設(shè)計與實現(xiàn)
- 軟件工程畢業(yè)論文-社交網(wǎng)站的設(shè)計與實現(xiàn)
評論
0/150
提交評論