本發(fā)明涉及Flash播放器的資源加載領域,一種Flash播放器的資源加載方法及系統(tǒng)。
背景技術:
Flash播放器是一個exe的可執(zhí)行程序,用于播放本地swf格式文件(基于矢量的Flash動畫文件)。Flash播放器使用時加載的資源大部分為美術資源(例如圖片、動畫等)、以及程序初始化后所占用的內存資源。
目前,現有的Flash播放器初始化時,會一次性加載所有在初始化和使用過程中可能需要用到的美術資源和內存資源,由于加載的資源過多,因此加載時需要占用大量的帶寬,進而使得CPU占用率過高,延長了Flash播放器的加載時間,即用戶需要大量時間等待,降低了用戶體驗。
技術實現要素:
針對現有技術中存在的缺陷,本發(fā)明解決的技術問題為:減少Flash播放器初始化過程中加載的資源文件的數量,關聯(lián)已經加載的所有美術資源文件。
為達到以上目的,本發(fā)明提供的Flash播放器的資源加載方法,包括以下步驟:
步驟A:將Flash播放器在初始化過程中需要的所有資源文件進行壓縮,所有資源文件包括若干美術資源文件和若干內存資源文件;
步驟B:對步驟A中壓縮后的所有資源文件進行處理:將所有美術資源文件分成至少2份美術資源加載文件,將所有美術資源加載文件的加載地址,保存形成美術資源配置文件P1;將每1份內存資源文件均形成1塊內存資源加載模塊,將所有內存資源加載模塊的模塊名稱,保存形成內存資源配置文件P2;
步驟C:初始化Flash播放器時,加載P1中每個加載地址對應的所有美術資源文件;實例化P2中的每個模塊名稱對應的內存資源加載模塊;創(chuàng)建一個資源池字典,獲取已加載的每份美術資源文件的文件名稱和對應的文件內容;在資源池字典中插入與每個文件名稱關聯(lián)的資源名,插入與每個文件內容關聯(lián)的資源內容對象;
步驟D:在Flash播放器使用過程中需要加載資源文件時,判斷步驟C中所述資源池字典中,是否存在與當前需要加載的資源文件對應的資源名,若是,直接將當前資源名關聯(lián)的美術資源文件,作為當前需要加載的資源文件;否則向服務器請求加載當前需要加載的資源文件;
步驟E:每加載1份美術資源文件后,獲取加載的當前美術資源文件的文件名稱和文件內容;在步驟C中創(chuàng)建的資源池字典中插入與當前的文件名稱關聯(lián)的資源名,插入與當前的文件內容關聯(lián)的資源內容對象。
本發(fā)明提供的實現上述方法的Flash播放器的資源加載系統(tǒng),包括資源文件壓縮模塊、資源文件處理模塊、資源文件初始化模塊、資源池字典設置模塊、資源文件加載模塊和資源池字典更新模塊;
資源文件壓縮模塊用于:將Flash播放器在初始化過程中需要的所有資源文件進行壓縮,所有資源文件包括若干美術資源文件和若干內存資源文件;
資源文件處理模塊用于:對資源文件壓縮模塊壓縮后的所有資源文件進行處理:將所有美術資源文件分成至少2份美術資源加載文件,將所有美術資源加載文件的加載地址,保存形成美術資源配置文件P1;將每1份內存資源文件均形成1塊內存資源加載模塊,將所有內存資源加載模塊的模塊名稱,保存形成內存資源配置文件P2;
資源文件初始化模塊用于:初始化Flash播放器時,加載P1中每個加載地址對應的所有美術資源文件;實例化P2中的每個模塊名稱對應的內存資源加載模塊;
資源池字典設置模塊用于:創(chuàng)建一個資源池字典,獲取已加載的每份美術資源文件的文件名稱和對應的文件內容;在資源池字典中插入與每個文件名稱關聯(lián)的資源名,插入與每個文件內容關聯(lián)的資源內容對象;
資源文件加載模塊用于:在Flash播放器使用過程中需要加載資源文件時,判斷資源文件初始化模塊中創(chuàng)建的資源池字典中,是否存在與當前需要加載的資源文件對應的資源名,若是,直接將當前資源名關聯(lián)的美術資源文件,作為當前需要加載的資源文件;否則向服務器請求新增當前需要加載的資源文件;
資源池字典更新模塊用于:每加載1份美術資源文件后,獲取加載的當前美術資源文件的文件名稱和文件內容;在資源文件初始化模塊創(chuàng)建的資源池字典中插入與當前文件名稱關聯(lián)的資源名,插入與當前文件內容關聯(lián)的資源內容對象。
與現有技術相比,本發(fā)明的優(yōu)點在于:
本發(fā)明按照Flash播放器的初始化和后續(xù)使用過程,將資源文件區(qū)分為2類,在Flash播放器初始化時,僅加載初始化需要的資源文件。因此,與現有技術中一次性加載所有在初始化和使用過程中可能需要用到的美術資源和內存資源相比,本發(fā)明在Flash播放器初始化時,加載的資源文件較少,減少了所用的帶寬,降低了CPU的占用率,進入顯著縮短了Flash播放器的加載時間和用戶的等待時間,提高了用戶體驗。
在此基礎上,本發(fā)明在Flash播放器初始化后,創(chuàng)建了記錄所有加載的美術資源文件的資源池字典,因此本發(fā)明能夠在需要時,直接在資源池字典中根據資源名獲取到相應的資源,進而快速將該資源根據程序需求進行實例化使用,進一步縮短了用戶的等待時間。與此同時,若Flash播放器后續(xù)需要加載資源時,會先在資源池字典中查找是否需要加載的資源文件是否存在,若存在則直接使用,進而避免了同樣的資源重復加載,進一步提高了用戶體驗。
附圖說明
圖1為本發(fā)明實施例中Flash播放器的資源加載方法的流程圖。
具體實施方式
以下結合附圖及實施例對本發(fā)明作進一步詳細說明。
參見圖1所示,本發(fā)明實施例中的Flash播放器的資源加載方法,包括以下步驟:
S1:將Flash播放器在初始化和使用過程中(初始化在前,使用在后)需要的所有資源文件(例如jpg、mp3、xml等)進行壓縮,所有資源文件包括若干美術資源文件和若干內存資源文件(當前和以下出現的美術資源文件和內存資源文件均為壓縮包形式),轉到S2。
S2:根據效果或者功能,將所有美術資源文件分成至少2份美術資源加載文件,將每1份內存資源文件均形成1塊內存資源加載模塊(即將Flash播放器項目代碼里面關于B類資源的代碼以模塊化編寫),轉到S3。
S3:將初始化過程中需要的所有美術資源加載文件(假如Flash播放器初始化時必須有一個加載動畫,則該動畫對應的美術資源加載文件即為初始化過程中需要使用)的加載地址,保存形成美術資源配置文件P1;將初始化過程中需要的所有內存資源加載模塊的模塊名稱,保存形成內存資源配置文件P2,將使用過程中需要的所有美術資源加載文件的加載地址、以及所有內存資源加載模塊的模塊名稱,保存形成后續(xù)資源配置文件P3,轉到S4。
S4:初始化Flash播放器時,初始化過程中需要的所有美術資源加載文件和所有內存資源文件,都會隨之進行初始化。加載并讀取P1的加載地址,根據每個加載地址加載對應的所有美術資源文件;加載P2,利用映射思路,實例化P2中的每個模塊名稱對應的內存資源加載模塊,轉到S5。
S5:在內存中創(chuàng)建一個資源池字典,利用FZip庫類的getFileCount方法獲取S4中已加載的所有美術資源文件的數量。循環(huán)利用FZip庫類的getFileAt(i)方法,獲取S4中已加載的每個美術資源文件的文件名稱和對應的文件內容;在資源池字典中插入與每個文件名稱關聯(lián)的資源名,插入與每個文件內容關聯(lián)的資源內容對象,這樣就能夠在需要時,直接在資源池字典中根據資源名獲取到相應的資源,進而快速將該資源根據程序需求進行實例化使用,轉到S6。
S6:在帶寬占用率小于等于5%的狀態(tài)下,加載P3,根據S4的方法,加載P3中每個加載地址對應的所有美術資源文件,實例化P3中的每個模塊名稱對應的內存資源加載模塊。在執(zhí)行S6的過程中,若帶寬占用率大于5%,則可以采用以下兩種流程:1、中止S6,當帶寬占用率再次小于等于5%時繼續(xù)進行,直到P3中的所有美術資源加載文件和內存資源加載模塊被加載完畢;2、轉到S7。
S7:在Flash播放器使用過程中需要加載資源文件時,判斷S5中的資源池字典中,是否存在與當前需要加載的資源文件對應的資源名,若是,直接將當前資源名關聯(lián)的美術資源文件,作為當前需要加載的資源文件(這里體現出資源池字典的好處,避免同樣的資源重復加載),轉到S9;否則向服務器請求加載當前需要加載的資源文件,轉到S8。
S8:每加載1份美術資源文件后,利用S5的方法重新獲取所有加載的美術資源文件的數量、以及每份美術資源文件的文件名稱和文件內容;在資源池字典中插入與新加載的文件名稱關聯(lián)的資源名,插入與新加載的文件內容關聯(lián)的資源內容對象,以保證資源池字典中記錄有所有加載的美術資源文件,轉到S9。
S9:在資源池字典每插入1個資源名和對應的資源內容對象后,按照預先設置的計時周期(至少10分鐘)開始計時,計時周期過后,若當前資源名關聯(lián)的美術資源文件未被使用,則在資源池字典中移除當前資源名和對應的資源內容對象,以減小內存的消耗。
本發(fā)明實施例提供的實現上述方法的Flash播放器的資源加載系統(tǒng),包括資源文件壓縮模塊、資源文件處理模塊、資源文件初始化模塊、使用資源文件加載模塊、資源池字典設置模塊、資源文件加載模塊和資源池字典更新模塊和資源文件使用狀態(tài)確定模塊。
資源文件壓縮模塊用于:將Flash播放器在初始化和使用過程中需要的所有資源文件進行壓縮,所有資源文件包括若干美術資源文件和若干內存資源文件。
資源文件處理模塊用于:將所有美術資源文件分成至少2份美術資源加載文件,將每1份內存資源文件均形成1塊內存資源加載模塊;將初始化過程中需要的所有美術資源加載文件的加載地址,保存形成美術資源配置文件P1;將初始化過程中需要的所有內存資源加載模塊的模塊名稱,保存形成內存資源配置文件P2,將使用過程中需要的所有美術資源加載文件的加載地址、以及所有內存資源加載模塊的模塊名稱,保存形成后續(xù)資源配置文件P3。
資源文件初始化模塊用于:初始化Flash播放器時,加載P1中每個加載地址對應的所有美術資源文件;實例化P2中的每個模塊名稱對應的內存資源加載模塊。
使用資源文件加載模塊用于:在資源文件初始化模塊工作完成后,并且在帶寬占用率小于等于5%的狀態(tài)下,加載P3中每個加載地址對應的所有美術資源文件,實例化P3中的每個模塊名稱對應的內存資源加載模塊。
資源池字典設置模塊用于:
(1)創(chuàng)建一個資源池字典,獲取已加載的每份美術資源文件的文件名稱和對應的文件內容;在資源池字典中插入與每個文件名稱關聯(lián)的資源名,插入與每個文件內容關聯(lián)的資源內容對象;
(2)在創(chuàng)建資源池字典之后、以及在每新增1份美術資源文件之后,還包括以下步驟:獲取已加載的所有美術資源文件的數量。
資源文件加載模塊用于:在Flash播放器使用過程中需要加載資源文件時,判斷資源文件初始化模塊中創(chuàng)建的資源池字典中,是否存在與當前需要加載的資源文件對應的資源名,若是,直接將當前資源名關聯(lián)的美術資源文件,作為當前需要加載的資源文件;否則向服務器請求新增當前需要加載的資源文件;
資源池字典更新模塊用于:每加載1份美術資源文件后,獲取加載的當前美術資源文件的文件名稱和文件內容;在資源文件初始化模塊創(chuàng)建的資源池字典中插入與當前文件名稱關聯(lián)的資源名,插入與當前文件內容關聯(lián)的資源內容對象。
資源文件使用狀態(tài)確定模塊用于:在資源池字典每插入1個資源名和對應的資源內容對象后,按照預先設置的計時周期開始計時,計時周期過后,若當前資源名關聯(lián)的美術資源文件未被使用,則在資源池字典中移除當前資源名和對應的資源內容對象。
本發(fā)明不局限于上述實施方式,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也視為本發(fā)明的保護范圍之內。本說明書中未作詳細描述的內容屬于本領域專業(yè)技術人員公知的現有技術。