本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種動畫資源的配置方法、播放方法和裝置。
背景技術(shù):
動畫資源是描述動畫的完整數(shù)據(jù)信息,比如一個圖像互換格式(Graphics Interchange Format,GIF)文件,它包含了動畫的圖片數(shù)據(jù)和控制數(shù)據(jù)。在終端播放動畫資源時,調(diào)用圖片繪制引擎讀取該動畫資源中已保存的圖片數(shù)據(jù),然后按照一定的幀率進(jìn)行播放,此時在動畫資源中圖片數(shù)據(jù)和控制數(shù)據(jù)都已經(jīng)提前配置好,并確定下來,因此動畫資源播放時能夠顯示的畫質(zhì)以及播放參量都是提前配置好的。但是在目前的動畫資源中圖片數(shù)據(jù)和控制數(shù)據(jù)通常是雜糅在一起的,共同保存在動畫資源的文件體數(shù)據(jù)中,通過文件頭數(shù)據(jù)中的不同字段和標(biāo)識來分別讀取圖片數(shù)據(jù)和控制數(shù)據(jù),但這種圖片數(shù)據(jù)與控制數(shù)據(jù)雜糅在一起的動畫資源,存在管理起來不靈活,渲染優(yōu)化不方便,畫質(zhì)修改受局限的缺點(diǎn),例如圖片繪制引擎變更、要求更新動畫畫質(zhì)時,都會引發(fā)已有的動畫資源無法兼容的問題,由于動畫資源中的控制數(shù)據(jù)和圖片數(shù)據(jù)是雜糅在一起的,這就需要重新制作動畫資源。
舉例說明,繪制引擎DirectX或OpenGL不能直接從動畫資源中創(chuàng)建紋理特征,而是需要先繪制圖片,這就需要先從動畫資源中與控制數(shù)據(jù)雜糅在一起的圖片數(shù)據(jù)中抽取出多個幀的圖片,對于每個幀的圖片數(shù)據(jù)再生成紋理特征,然后將涵蓋圖片數(shù)據(jù)的紋理特征提交到顯卡,抽取每個幀的圖片數(shù)據(jù)時就需要多次合并到紋理特征中,而這顯然導(dǎo)致對動畫資源的使用不夠靈活,操作復(fù)雜。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種動畫資源的配置方法、播放方法和裝置,用于簡化對動畫資源的管理,畫質(zhì)修改和渲染優(yōu)化簡單易操作。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供以下技術(shù)方案:
第一方面,本發(fā)明實(shí)施例提供一種動畫資源的配置方法,包括:
根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件;
將所述至少兩個圖片源文件合并到圖片數(shù)據(jù)中,所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中分別處于不同的區(qū)域位置;
根據(jù)所述幀配置信息和所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù);
將所述控制數(shù)據(jù)和所述圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將所述兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。
第二方面,本發(fā)明實(shí)施例還提供一種動畫資源的播放方法,包括:
獲取需要播放的動畫資源;
從所述動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)所述兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù);
根據(jù)所述控制數(shù)據(jù)從所述圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件;
根據(jù)所述控制數(shù)據(jù)在不同的幀時間依次播放所述至少兩個圖片源文件。
第三方面,本發(fā)明實(shí)施例提供一種動畫資源的配置裝置,包括:
圖片獲取模塊,用于根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件;
圖片合并模塊,用于將所述至少兩個圖片源文件合并到圖片數(shù)據(jù)中,所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中分別處于不同的區(qū)域位置;
控制數(shù)據(jù)生成模塊,用于根據(jù)所述幀配置信息和所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù);
數(shù)據(jù)分類打包模塊,用于將所述控制數(shù)據(jù)和所述圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將所述兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。
第四方面,本發(fā)明實(shí)施例提供一種動畫資源的播放裝置,包括:
動畫獲取模塊,用于獲取需要播放的動畫資源;
數(shù)據(jù)分類解析模塊,用于從所述動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)所述兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù);
圖片讀取模塊,用于根據(jù)所述控制數(shù)據(jù)從所述圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件;
動畫播放模塊,用于根據(jù)所述控制數(shù)據(jù)在不同的幀時間依次播放所述至少兩個圖片源文件。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
在本發(fā)明實(shí)施例提供的動畫資源的配置方法中,首先根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件,然后將至少兩個圖片源文件合并到圖片數(shù)據(jù)中,至少兩個圖片源文件在圖片數(shù)據(jù)中分別處于不同的區(qū)域位置,接下來根據(jù)幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù),最后將控制數(shù)據(jù)和圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。由于至少兩個圖片源文件在合并之后在圖片數(shù)據(jù)中處于不同的區(qū)域位置,因此在將控制數(shù)據(jù)和圖片數(shù)據(jù)分別打包存儲之后,兩個不同的文件數(shù)據(jù)包分別控制數(shù)據(jù)和圖片數(shù)據(jù),因此在需要對控制數(shù)據(jù)、圖片數(shù)據(jù)做更新時很容易實(shí)現(xiàn),無需重新制作動畫資源,簡化對動畫資源的管理,通過對控制數(shù)據(jù)的更新可以實(shí)現(xiàn)渲染優(yōu)化易操作,通過對圖片數(shù)據(jù)的更新可以實(shí)現(xiàn)畫質(zhì)修改易操作。
在本發(fā)明實(shí)施例提供的動畫資源的播放方法中,首先獲取需要播放的動畫資源,然后從動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù),接下來根據(jù)控制數(shù)據(jù)從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件,最后根據(jù)控制數(shù)據(jù)在不同的幀時間依次播放至少兩個圖片源文件。由于在動畫資源中是以兩個不同的文件數(shù)據(jù)包對控制數(shù)據(jù)和圖片數(shù)據(jù)分別打包存儲,因此在讀取圖片數(shù)據(jù)和控制數(shù)據(jù)可以在兩個文件數(shù)據(jù)包中分別完成,動畫資源的播放效率更高。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域的技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種動畫資源的配置方法的流程方框示意圖;
圖2為本發(fā)明實(shí)施例提供的一種動畫資源的播放方法的流程方框示意圖;
圖3-a為本發(fā)明實(shí)施例提供的多個圖片源文件的應(yīng)用場景示意圖;
圖3-b為本發(fā)明實(shí)施例提供的合并后的圖片數(shù)據(jù)的一種應(yīng)用場景示意圖;
圖4為本發(fā)明實(shí)施例提供的動畫資源的配置方法應(yīng)用于配置工具的操作界面示意圖;
圖5為本發(fā)明實(shí)施例提供的動畫資源的配置方法在一種應(yīng)用場景下的實(shí)現(xiàn)流程示意圖;
圖6為本發(fā)明實(shí)施例提供的動畫資源的播放方法的一種應(yīng)用場景下的實(shí)現(xiàn)流程示意圖;
圖7-a為本發(fā)明實(shí)施例提供的一種動畫資源的配置裝置的組成結(jié)構(gòu)示意圖;
圖7-b為本發(fā)明實(shí)施例提供的另一種動畫資源的配置裝置的組成結(jié)構(gòu)示意圖;
圖8-a為本發(fā)明實(shí)施例提供的一種動畫資源的播放裝置的組成結(jié)構(gòu)示意圖;
圖8-b為本發(fā)明實(shí)施例提供的另一種動畫資源的播放裝置的組成結(jié)構(gòu)示意圖;
圖9為本發(fā)明實(shí)施例提供的動畫資源的配置方法應(yīng)用于服務(wù)器的組成結(jié)構(gòu)示意圖;
圖10為本發(fā)明實(shí)施例提供的動畫資源的播放方法應(yīng)用于終端的組成結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種動畫資源的配置方法、播放方法和裝置,用于簡化對動畫資源的管理,畫質(zhì)修改和渲染優(yōu)化簡單易操作。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
以下分別進(jìn)行詳細(xì)說明。
本發(fā)明動畫資源的配置方法的一個實(shí)施例,具體可以應(yīng)用于配置動畫資源的過程中,便于對動畫資源的管理,請參閱圖1所示,本發(fā)明一個實(shí)施例提供的動畫資源的配置方法,可以包括如下步驟:
101、根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件。
在本發(fā)明實(shí)施例中,圖片源文件是指動畫應(yīng)用場景中需要播放的圖片,圖片源文件的格式可以有多種,可以是高畫質(zhì)圖片,也可以是低畫質(zhì)圖片,通常可以按照動畫播放順序?qū)⒅辽賰蓚€圖片源文件配置給不同幀時間,根據(jù)幀配置信息按照先后播放順序來獲取到至少兩個圖片源文件,其中幀配置信息可以由用戶輸入,也可以根據(jù)動畫資源的配置裝置中默認(rèn)的參數(shù)來輸入幀配置信息,例如幀配置信息可以包括:幀數(shù)、每幀間隔等信息。在實(shí)際應(yīng)用中,配置給不同幀時間的至少兩個圖片源文件可以采用不同的數(shù)字來命名各個圖片源文件,則各個源文件的播放順序通過名稱中的數(shù)字順序來確定。
102、將至少兩個圖片源文件合并到圖片數(shù)據(jù)中,至少兩個圖片源文件在圖片數(shù)據(jù)中分別處于不同的區(qū)域位置。
在本發(fā)明實(shí)施例中,獲取到至少兩個圖片源文件之后,將至少兩個圖片源文件合并到圖片數(shù)據(jù)中,至少兩個圖片源文件在圖片數(shù)據(jù)中分別處于不同的區(qū)域位置,具體合成后的圖片數(shù)據(jù)的最大寬度和最大高度可以根據(jù)具體應(yīng)用場景來確定,通過對多個圖片源文件的合并操作,使得多個圖片源文件可以合并到一個圖片數(shù)據(jù),后續(xù)在存儲時只需要存儲該圖片數(shù)據(jù)即可,無需再對每個圖片源文件進(jìn)行存儲,通過合并多個圖片源文件得到的圖片數(shù)據(jù)具體可以是高畫質(zhì)的圖片數(shù)據(jù)。舉例說明,圖片源文件可以是6個,分別為源圖片1、源圖片2、源圖片3、源圖片4、源圖片5、源圖片6、則這6個源圖片可以合并到一個圖片數(shù)據(jù)中,該圖片數(shù)據(jù)是比源圖片的寬度和高度都要大的圖片,在合并后的圖片數(shù)據(jù)中源圖片1、源圖片2、源圖片3、源圖片4、源圖片5、源圖片6分別對應(yīng)于圖片數(shù)據(jù)中的不同區(qū)域位置,各個源圖片的區(qū)域位置可以通過圖片數(shù)據(jù)中的區(qū)域坐標(biāo)來表示,則通過區(qū)域位置的查找可以從圖片數(shù)據(jù)中獲取到各個源圖片。
在本發(fā)明的一些實(shí)施例中,步驟102將至少兩個圖片源文件合并到圖片數(shù)據(jù)中之后,本發(fā)明實(shí)施例提供的動畫資源的配置方法還包括如下步驟:
A1、按照預(yù)置的圖片轉(zhuǎn)換格式對圖片數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換從而生成指定格式的圖片數(shù)據(jù)。
具體的,本發(fā)明實(shí)施例中通過合并多個圖片源文件得到圖片數(shù)據(jù)之后,該圖片數(shù)據(jù)中包括有所有圖片源文件的紋理特征,若用戶對圖片的格式有特殊要求,或者圖片繪制引擎只能夠識別某種或某些特殊格式的圖片,本發(fā)明實(shí)施例中還可以對合并圖片源文件得到的圖片數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,從而方便圖片繪制引擎能夠?qū)χ付ǜ袷降膱D片數(shù)據(jù)進(jìn)行渲染優(yōu)化,及時繪制引擎發(fā)生更新或者更換,也可以通過圖片轉(zhuǎn)換得到指定格式的圖片數(shù)據(jù),使得所有繪制引擎都能夠支持讀取和繪制,繪制引擎不需要做任何適配就可以播放動畫資源。舉例說明,本發(fā)明實(shí)施例中通過合并多個圖片源文件得到的圖片數(shù)據(jù)為TGA(Tagged Graphics)文件,這是一種常用的高質(zhì)量圖片格式,如果更換的繪制引擎不支持讀取繪制TGA文件,但它支持bmp(bitmap)文件,這時就可以將TGA文件轉(zhuǎn)換成bmp文件,讓動畫資源可以在新的繪制引擎上播放。
103、根據(jù)幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù)。
在本發(fā)明實(shí)施例中,將至少兩個圖片源文件合并到圖片數(shù)據(jù)中之后,需要記錄每個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置,通過每個圖片源文件對應(yīng)的區(qū)域位置和幀配置信息再生成控制數(shù)據(jù),該控制數(shù)據(jù)用于描述動畫的變化情況,通過該控制數(shù)據(jù)可以指導(dǎo)圖片數(shù)據(jù)如何進(jìn)行播放,并且在控制數(shù)據(jù)中還攜帶有每個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置,因此在生成的控制數(shù)據(jù)中能夠指示動畫如何播放完成。
在本發(fā)明的一些實(shí)施例中,控制數(shù)據(jù)包括:圖片數(shù)據(jù)的存儲路徑、至少兩個圖片源文件在圖片數(shù)據(jù)中分別所處的區(qū)域位置、動畫播放時長、動畫播放次數(shù)、動畫播放完畢后是否隱藏播放窗口。具體的,在實(shí)際應(yīng)用中可以根據(jù)需要來靈活配置控制數(shù)據(jù)包括的一種或多種數(shù)據(jù)內(nèi)容,其中,圖片數(shù)據(jù)的存儲路徑可以寫入控制數(shù)據(jù),從而通過解析控制數(shù)據(jù)就可以獲取到圖片數(shù)據(jù)的存儲路徑,動畫播放時長是指動畫資源播放的時間總長度,動畫播放次數(shù)是指動畫資源播放的次數(shù),可以根據(jù)用戶需要來配置,動畫播放完畢后是否隱藏播放窗口也可以由用戶來配置,或者采用默認(rèn)配置的方式,此處不做限定。
在本發(fā)明的一些實(shí)施例中,步驟103根據(jù)幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù),具體可以包括如下步驟:
B1、根據(jù)幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置,按照可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)格式生成控制數(shù)據(jù)。
具體的,通過幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù)時,可以將該控制數(shù)據(jù)按照XML格式輸出,XML格式的控制數(shù)據(jù)是文本文件,便于對控制數(shù)據(jù)的后期更新,例如多個控制數(shù)據(jù)在合并時可以通過文本文件的修改就可以完成,另外控制數(shù)據(jù)也可以通過用戶進(jìn)行手動編輯,文本文件編輯完成后保存即可以在動畫資源中生效,而無需再次生成動畫資源。
104、將控制數(shù)據(jù)和圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。
在本發(fā)明實(shí)施例中,為了改變現(xiàn)有技術(shù)中圖片數(shù)據(jù)和控制數(shù)據(jù)雜糅在一起的存儲方式,本發(fā)明實(shí)施例中在分別生成圖片數(shù)據(jù)和控制數(shù)據(jù)之后,將控制數(shù)據(jù)和圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。在現(xiàn)有技術(shù)中,文件數(shù)據(jù)從頭到尾一般被分為文件頭(格式定義)、文件體(文件數(shù)據(jù))、文件尾(其他),在文件頭里面會記錄圖片數(shù)據(jù)在文件體中的開始位置以及圖片數(shù)據(jù)的長度,同樣的,文件頭里面也會有控制數(shù)據(jù)的位置及長度,因此在現(xiàn)有技術(shù)中文件體是共同記錄有圖片數(shù)據(jù)和控制數(shù)據(jù)的,圖片數(shù)據(jù)和控制數(shù)據(jù)的區(qū)分通過文件頭中的標(biāo)識位來描述,這是目前采用的通用文件數(shù)據(jù)生成方式,本發(fā)明實(shí)施例采用與之完全不同的文件數(shù)據(jù)生成方式,改變了現(xiàn)有技術(shù)中圖片數(shù)據(jù)和控制數(shù)據(jù)雜糅存儲的慣用思維,并且現(xiàn)有技術(shù)中每個圖片源文件直接存儲在文件體中,本發(fā)明實(shí)施例先對多個圖片源文件進(jìn)行合并操作,從而生成一個圖片數(shù)據(jù),這就為圖片數(shù)據(jù)和控制數(shù)據(jù)分離存儲提供了先決條件,使得在存儲圖片文件的數(shù)據(jù)包中不再有多個圖片源文件,而是只存儲有合并后的圖片數(shù)據(jù),但是合并后的圖片數(shù)據(jù)中保存所有圖片源文件的紋理特征,可以通過該圖片文件還原出每個圖片源文件。本發(fā)明實(shí)施例中通過合并圖片源文件以及圖片數(shù)據(jù)、控制數(shù)據(jù)的分離存儲,改變了現(xiàn)有的動畫資源的配置方式,使得按照本發(fā)明實(shí)施例配置的動畫資源能夠包括兩個不同的文件數(shù)據(jù)包,對圖片數(shù)據(jù)、控制數(shù)據(jù)的更新容易實(shí)現(xiàn),無需重新生成動畫資源。
通過以上實(shí)施例對本發(fā)明實(shí)施例的描述可知,首先根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件,然后將至少兩個圖片源文件合并到圖片數(shù)據(jù)中,至少兩個圖片源文件在圖片數(shù)據(jù)中分別處于不同的區(qū)域位置,接下來根據(jù)幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù),最后將控制數(shù)據(jù)和圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。由于至少兩個圖片源文件在合并之后在圖片數(shù)據(jù)中處于不同的區(qū)域位置,因此在將控制數(shù)據(jù)和圖片數(shù)據(jù)分別打包存儲之后,兩個不同的文件數(shù)據(jù)包分別控制數(shù)據(jù)和圖片數(shù)據(jù),因此在需要對控制數(shù)據(jù)、圖片數(shù)據(jù)做更新時很容易實(shí)現(xiàn),無需重新制作動畫資源,簡化對動畫資源的管理,通過對控制數(shù)據(jù)的更新可以實(shí)現(xiàn)渲染優(yōu)化易操作,通過對圖片數(shù)據(jù)的更新可以實(shí)現(xiàn)畫質(zhì)修改易操作。
前述實(shí)施例中從動畫資源的配置制作過程進(jìn)行了說明,接下來對通過本發(fā)明實(shí)施例制作出的動畫資源進(jìn)行播放,具體的,請參閱圖2所示,本發(fā)明一個實(shí)施例提供的動畫資源的播放方法,可以包括如下步驟:
201、獲取需要播放的動畫資源。
在本發(fā)明實(shí)施例中,首先輸入需要播放的動畫資源,該動畫資源可以由網(wǎng)頁服務(wù)器通過用戶點(diǎn)播來提供,例如當(dāng)用戶訪問網(wǎng)頁時,對自己感興趣的動畫進(jìn)行點(diǎn)擊,則可以通過網(wǎng)頁服務(wù)器來下載到動畫資源,本發(fā)明實(shí)施例中的動畫資源可以基于前述圖1所示的配置方法生成,具體動畫資源的生成過程詳見前述實(shí)施例的舉例說明,此處不再贅述。
在本發(fā)明的一些實(shí)施例中,控制數(shù)據(jù)包括:圖片數(shù)據(jù)的存儲路徑、至少兩個圖片源文件在圖片數(shù)據(jù)中分別所處的區(qū)域位置、動畫播放時長、動畫播放次數(shù)、動畫播放完畢后是否隱藏播放窗口。具體的,在實(shí)際應(yīng)用中可以根據(jù)需要來靈活配置控制數(shù)據(jù)包括的一種或多種數(shù)據(jù)內(nèi)容,其中,圖片數(shù)據(jù)的存儲路徑可以寫入控制數(shù)據(jù),從而通過解析控制數(shù)據(jù)就可以獲取到圖片數(shù)據(jù)的存儲路徑,動畫播放時長是指動畫資源播放的時間總長度,動畫播放次數(shù)是指動畫資源播放的次數(shù),可以根據(jù)用戶需要來配置,動畫播放完畢后是否隱藏播放窗口也可以由用戶來配置,或者采用默認(rèn)配置的方式,此處不做限定。
202、從動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù)。
在本發(fā)明實(shí)施例中,獲取到待播放的動畫資源之后,由前述實(shí)施例描述的動畫資源的打包生成方式可知,該動畫資源中通過兩個不同文件數(shù)據(jù)包的打包生成,因此對該動畫資源進(jìn)行解析后,可以分別獲取到兩個不同的文件數(shù)據(jù)包,每個文件數(shù)據(jù)包單獨(dú)進(jìn)行解析,可以從兩個文件數(shù)據(jù)包中獲取到控制數(shù)據(jù)和圖片數(shù)據(jù),本發(fā)明實(shí)施例中控制數(shù)據(jù)和圖片數(shù)據(jù)是分離存儲的,因此通過各自獨(dú)立的文件數(shù)據(jù)包可以獲取到完整的控制數(shù)據(jù)和完整的圖片數(shù)據(jù),控制數(shù)據(jù)和圖片數(shù)據(jù)的獲取過程可以是同時進(jìn)行的,也可以根據(jù)處理器的處理能力先后獲取到,這與現(xiàn)有技術(shù)中通過解析文件頭的標(biāo)識位從文件體中讀取控制數(shù)據(jù)以及與之雜糅在一起的圖片數(shù)據(jù)是完全不相同的實(shí)現(xiàn)方式,本發(fā)明實(shí)施例中控制數(shù)據(jù)和圖片數(shù)據(jù)的獨(dú)立存儲,使得對控制數(shù)據(jù)和圖片數(shù)據(jù)的獲取更方便操作,并且對控制數(shù)據(jù)和圖片數(shù)據(jù)的更新也可以很容易的實(shí)現(xiàn)。
203、根據(jù)控制數(shù)據(jù)從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件。
在本發(fā)明實(shí)施例中,獲取到控制數(shù)據(jù)以及圖片數(shù)據(jù)之后,由于該控制數(shù)據(jù)中攜帶有圖片數(shù)據(jù)的各個區(qū)域位置信息,因此可以根據(jù)控制數(shù)據(jù)的指示可以從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件,這些圖片源文件是配置給不同幀時間的,從而也就確定了這些圖片源文件的播放先后順序。
在本發(fā)明的一些實(shí)施例中,步驟202從動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù)之后,本發(fā)明實(shí)施例除了執(zhí)行步驟203之外,還可以包括如下步驟:
C1、按照預(yù)置的圖片轉(zhuǎn)換格式對圖片數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換從而生成指定格式的圖片數(shù)據(jù)。
具體的,本發(fā)明實(shí)施例中從兩個不同的文件數(shù)據(jù)包分別得到控制數(shù)據(jù)和圖片數(shù)據(jù)之后,該圖片數(shù)據(jù)中包括有所有圖片源文件的紋理特征,若用戶對圖片的格式有特殊要求,或者圖片繪制引擎只能夠識別某種或某些特殊格式的圖片,本發(fā)明實(shí)施例中還可以對圖片數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,從而方便圖片繪制引擎能夠?qū)χ付ǜ袷降膱D片數(shù)據(jù)進(jìn)行渲染優(yōu)化,及時繪制引擎發(fā)生更新或者更換,也可以通過圖片轉(zhuǎn)換得到指定格式的圖片數(shù)據(jù),使得所有繪制引擎都能夠支持讀取和繪制,繪制引擎不需要做任何適配就可以播放動畫資源。
進(jìn)一步的,在本發(fā)明執(zhí)行前述步驟C1的實(shí)現(xiàn)場景下,步驟203根據(jù)控制數(shù)據(jù)從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件,具體包括如下步驟:
D1、根據(jù)控制數(shù)據(jù)從指定格式的圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件。
其中,若本發(fā)明實(shí)施例還對圖片數(shù)據(jù)進(jìn)行了格式轉(zhuǎn)換,例如從高畫質(zhì)的圖片數(shù)據(jù)轉(zhuǎn)換為低畫質(zhì)的圖片數(shù)據(jù),則該低畫質(zhì)的圖片數(shù)據(jù)就是指定格式的圖片數(shù)據(jù),在提取圖片源文件時可以從指定格式的圖片數(shù)據(jù)的不同區(qū)域位置來獲取,從而得到的圖片源文件能夠符合指定格式的畫質(zhì)要求。
在本發(fā)明的一些實(shí)施例中,步驟203根據(jù)控制數(shù)據(jù)從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件,包括:
E1、調(diào)用圖片繪制引擎的接口,根據(jù)控制數(shù)據(jù)通過圖片繪制引擎依次讀取到圖片數(shù)據(jù)中處于不同區(qū)域位置的至少兩個圖片源文件。
其中,本發(fā)明實(shí)施例中圖片源文件的讀取可以通過圖片繪制引擎提供的對外訪問接口來完成,獲取到圖片數(shù)據(jù)和控制數(shù)據(jù)之后,調(diào)用圖片繪制引擎的接口,根據(jù)控制數(shù)據(jù)通過圖片繪制引擎依次讀取到圖片數(shù)據(jù)中處于不同區(qū)域位置的至少兩個圖片源文件,圖片繪制引擎可以是動畫資源的播放裝置中的底層繪制引擎,通過圖片繪制引擎的接口可以從圖片數(shù)據(jù)中快速讀取到圖片源文件。
204、根據(jù)控制數(shù)據(jù)在不同的幀時間依次播放至少兩個圖片源文件。
在本發(fā)明實(shí)施例中,獲取到至少兩個圖片源文件之后,根據(jù)控制數(shù)據(jù)可以指導(dǎo)圖片源文件的播放,例如根據(jù)控制數(shù)據(jù)確定播放界面的各種參數(shù)、圖片源文件的播放時長、播放次數(shù)等,具體此處不做限定。本發(fā)明實(shí)施例中動畫資源的配置方式與現(xiàn)有技術(shù)不相同,基于這種新的動畫資源而實(shí)現(xiàn)動畫播放方法也與現(xiàn)有技術(shù)不相同,因此本發(fā)明實(shí)施例中動畫播放能夠適配各種繪制引擎,對控制數(shù)據(jù)和圖片數(shù)據(jù)的更新都可以實(shí)現(xiàn)。
在本發(fā)明的一些實(shí)施例中,步驟204根據(jù)控制數(shù)據(jù)在不同的幀時間依次播放至少兩個圖片源文件,具體可以包括如下步驟:
F1、根據(jù)控制數(shù)據(jù)播放在當(dāng)前幀時間讀取到的第一圖片源文件,并同時啟動時鐘;
F2、在時鐘到達(dá)時,檢測已流逝時間,根據(jù)控制數(shù)據(jù)確定是否需要播放下一幀,若需要播放下一幀,從圖片數(shù)據(jù)中讀取到第二圖片源文件,并按照前述播放第一圖片源文件的方式繼續(xù)播放第二圖片源文件,當(dāng)滿足控制數(shù)據(jù)指示的停止條件時,停止播放圖片源文件。
具體的,在本發(fā)明的一些實(shí)施例中,從動畫資源中解析出的圖片數(shù)據(jù)可以包括多個圖片源文件,以其中配置給相鄰兩個幀時間的第一圖片源文件和第二圖片源文件的播放為例進(jìn)行說明,圖片數(shù)據(jù)中的其它圖片數(shù)據(jù)的播放也可以參閱步驟F1至步驟F2中的描述,首先根據(jù)控制數(shù)據(jù)播放在當(dāng)前幀時間讀取到的第一圖片源文件,并同時啟動時鐘,第一圖片源文件在播放界面中播放時,后臺會對時鐘進(jìn)行計(jì)時,在時鐘到達(dá)時,檢測已流逝時間,根據(jù)控制數(shù)據(jù)確定是否需要播放下一幀,若需要播放下一幀,從圖片數(shù)據(jù)中讀取到第二圖片源文件,并按照前述播放第一圖片源文件的方式繼續(xù)播放第二圖片源文件,即重新執(zhí)行步驟F1來播放第二圖片源文件,當(dāng)滿足控制數(shù)據(jù)指示的停止條件時,停止播放圖片源文件,該停止條件可以是播放時長達(dá)到最大時長,或者播放圖片幀數(shù)達(dá)到最大幀數(shù)等,此處不做限定。
通過以上實(shí)施例對本發(fā)明實(shí)施例的描述可知,首先獲取需要播放的動畫資源,然后從動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù),接下來根據(jù)控制數(shù)據(jù)從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件,最后根據(jù)控制數(shù)據(jù)在不同的幀時間依次播放至少兩個圖片源文件。由于在動畫資源中是以兩個不同的文件數(shù)據(jù)包對控制數(shù)據(jù)和圖片數(shù)據(jù)分別打包存儲,因此在讀取圖片數(shù)據(jù)和控制數(shù)據(jù)可以在兩個文件數(shù)據(jù)包中分別完成,動畫資源的播放效率更高。
為便于更好的理解和實(shí)施本發(fā)明實(shí)施例的上述方案,下面舉例相應(yīng)的應(yīng)用場景來進(jìn)行具體說明。本發(fā)明實(shí)施例可以實(shí)現(xiàn)動畫資源中圖片數(shù)據(jù)和控制數(shù)據(jù)的分離管理。利用本發(fā)明,可以有效解決項(xiàng)目開發(fā)過程中可能變更圖片繪制引擎的帶來的動畫資源重做問題,動畫資源是描述動畫的完整數(shù)據(jù)信息,比如一個gif文件,它包含了動畫的圖片數(shù)據(jù)和控制數(shù)據(jù),而且方便繪制引擎做渲染優(yōu)化,資源復(fù)用也能降低軟件安裝包大小,動畫的圖片數(shù)據(jù)是指動畫中展現(xiàn)的像素?cái)?shù)據(jù),是顏色值或顏色的描述、引用的數(shù)據(jù)集合。動畫的控制數(shù)據(jù)是指描述動畫是如何變化的,通過控制圖片數(shù)據(jù)來指導(dǎo)動畫的行為。另外,在開發(fā)過程中,產(chǎn)品人員如果想更新動畫效果(比如提高畫質(zhì)、減小動畫文件規(guī)模等),也只要花費(fèi)非常小的人力成本。本發(fā)明提供的技術(shù)方案將圖片數(shù)據(jù)和控制數(shù)據(jù)分離(產(chǎn)品發(fā)布時可以再打包在一起),雖然是一種新的動畫格式,但并不需要圖片繪制引擎做特殊適配,能方便的做更新和復(fù)用。
為了實(shí)現(xiàn)本發(fā)明實(shí)施例對動畫資源的管理,本發(fā)明實(shí)施例提供的動畫資源的配置方法可以應(yīng)用于配置工具,該配置工具是可創(chuàng)建、編輯動畫、分離圖片數(shù)據(jù)和控制數(shù)據(jù)的工具,使用工具編輯動畫,請參閱圖3-a所示,為本發(fā)明實(shí)施例提供的多個圖片源文件的應(yīng)用場景示意圖,圖3-b為本發(fā)明實(shí)施例提供的合并后的圖片數(shù)據(jù)的一種應(yīng)用場景示意圖。制作動畫時,先由用戶把每一幀的源圖片畫出來,并使用高畫質(zhì)的圖片格式(比如TGA)保存成圖片源文件,TGA(Tagged Graphics)格式是一種圖像文件格式,成為高質(zhì)量圖像的常用格式。對于多個圖片源文件按播放的順序,以數(shù)字為每個文件命名,如圖3-a所示,從01.tga到12.tga,共有12個圖片源文件,文件名稱表示了圖片的播放順序。對多個圖片源文件進(jìn)行合并操作,從而得到圖3-b所示的合并后的圖片數(shù)據(jù),該圖片數(shù)據(jù)的名稱為:sample_1_12.tga,在合并后的圖片數(shù)據(jù)中,每個圖片源文件都對應(yīng)有一個區(qū)域位置,例如01.tga的圖片源文件對應(yīng)于sample_1_12.tga中的第一行第一個圖片紋理特征。
如圖4所示,為本發(fā)明實(shí)施例提供的動畫資源的配置方法應(yīng)用于配置工具的操作界面示意圖。點(diǎn)擊生成按鈕,工具將輸出三個文件:1、記錄控制數(shù)據(jù)的TFC(Tenio Frame Config)文件,TFC中文名Tenio幀配置。2、圖片數(shù)據(jù)的高畫質(zhì)版本圖片文件(例如TGA)。3、指定格式/畫質(zhì)的圖片數(shù)據(jù)文件(所有幀圖片合并,尺寸為2的冪)。例如,指定格式可以是png格式,這種格式是用戶選擇的要輸出的格式,TGA則是默認(rèn)的高畫質(zhì)輸出,不管選擇了那種輸出格式進(jìn)行轉(zhuǎn)換,工具都會同時輸出一份TGA作為圖片數(shù)據(jù)的備份。在圖4中,可以配置輸出控制數(shù)據(jù)的文件名:Sample,圖片格式:png為指定的轉(zhuǎn)換格式,合成的圖片數(shù)據(jù)的最大寬度和最大高度可以根據(jù)應(yīng)用場景來設(shè)置,自動循環(huán)播放和指定播放次數(shù)、停止時是否自動隱藏等幀配置信息可以采用配置工具的默認(rèn)配置,或者由用戶進(jìn)行靈活選擇,圖4中,以圖片數(shù)據(jù)共有12幀,其中,當(dāng)前幀為第10個幀的顯示為例。
本發(fā)明實(shí)施例中可以根據(jù)不同的畫質(zhì)要求,輸出不同格式的圖片數(shù)據(jù)。輸出的圖片數(shù)據(jù)是從每一個幀的圖片源文件合并得到的,例如png就是合并后得到的輸出文件。以圖4為例,這個顯示“S”的動畫有12幀,每一幀的圖片都保存在一張圖片源文件中,可以使用本發(fā)明實(shí)施例提供的配置工具將它們合并為png格式的圖片數(shù)據(jù)和TGA格式的圖片數(shù)據(jù)。同樣的,因?yàn)橛袌D片數(shù)據(jù)的高畫質(zhì)版本TGA文件,如果繪制引擎有需要,可以使用工具將TGA文件批量轉(zhuǎn)化成任意格式的圖片文件??刂茢?shù)據(jù)和圖片數(shù)據(jù)的分離,使得對動畫的版本管理非常簡單。另外,輸出的圖片數(shù)據(jù)支持常見的格式,所以只要繪制引擎支持讀取常見格式中的某一種,就能播放動畫,不需要做任何適配工作?,F(xiàn)實(shí)場景中,項(xiàng)目組的繪制引擎往往只支持靜態(tài)圖片,要實(shí)現(xiàn)動態(tài)圖片往往需要寫專門適配的代碼,本發(fā)明實(shí)施例可以免除了這項(xiàng)工作。
請參閱圖5所示,為本發(fā)明實(shí)施例提供的動畫資源的配置方法在一種應(yīng)用場景下的實(shí)現(xiàn)流程示意圖。接下來以分離圖片數(shù)據(jù)和控制數(shù)據(jù)的實(shí)現(xiàn)過程進(jìn)行舉例說明,需要提供一個工具讓用戶制作動畫,并在生成動畫時,由這個工具將動畫的圖片數(shù)據(jù)和控制數(shù)據(jù)分離保存。
該工具集成了一個使用開源圖像庫Cximage和DirectX實(shí)現(xiàn)的圖像庫,以便支持各種格式的圖片,生成動畫時,工具首先以原始幀圖片為基礎(chǔ),根據(jù)工具設(shè)置參數(shù),使用圖像庫將幀圖片合并為一張無損的高畫質(zhì)圖片數(shù)據(jù),然后圖像庫再以這張高畫質(zhì)圖片數(shù)據(jù)為數(shù)據(jù)源,將它轉(zhuǎn)化為指定格式的圖片數(shù)據(jù)。同時,使用開源庫TinyXml庫,將工具設(shè)置好的控制數(shù)據(jù)保存成xml格式存儲到文件中。圖像庫為項(xiàng)目軟件運(yùn)行時用到的數(shù)據(jù),TinyXml是寫入和解析XML格式文件用的,將TFC格式的控制數(shù)據(jù)保存成XML格式。
接下來對控制數(shù)據(jù)的文件格式進(jìn)行舉例說明,例如控制數(shù)據(jù)的邏輯代碼如下:
其中,由上述控制文件的邏輯代碼舉例說明可知,在控制數(shù)據(jù)中記錄了每一動畫幀的詳情:引用圖片數(shù)據(jù)的存儲路徑、引用圖片的區(qū)域位置、播放時長、播放次數(shù)、播放完畢是否隱藏等控制信息。這個控制數(shù)據(jù)是動畫的入口文件,用戶關(guān)心這個文件而不關(guān)心圖片文件,而引用圖片區(qū)域這個參數(shù)則可以提高圖片的復(fù)用。因?yàn)檫@個是文本文件,所以也可以手動編輯,在做文件合并時也很方便。因?yàn)槭俏谋疚募鞣N版本管理軟件都支持合并。
接下來對圖片數(shù)據(jù)的文件樣式進(jìn)行舉例說明,一張指定格式的圖片數(shù)據(jù),這個圖片是將所有動畫幀合并在一張紋理特征內(nèi),保存尺寸為2的冪,這兩個手段能幫助圖片繪制引擎做渲染優(yōu)化。由于是靜態(tài)圖片,繪制引擎都會支持讀取和繪制,所以繪制引擎不需要做任何適配即可播放動畫。
前述實(shí)施例對動畫資源的配置過程進(jìn)行了詳細(xì)舉例說明,接下來對動畫資源的播放過程進(jìn)行舉例說明,請參閱圖6所示,為本發(fā)明實(shí)施例提供的動畫資源的播放方法的一種應(yīng)用場景下的實(shí)現(xiàn)流程示意圖。
首先要實(shí)現(xiàn)一個動畫組件,它的作用是讀取解析控制數(shù)據(jù),自帶時鐘回調(diào),根據(jù)控制數(shù)據(jù)調(diào)用圖片繪制引擎的接口讀取、繪制圖片到畫布。這一通用組件使得圖片繪制引擎只用關(guān)心靜態(tài)圖片的讀取繪制,不用關(guān)心動畫的其他事情。其中,圖6中的上層邏輯指的是使用這個方案的項(xiàng)目代碼,比如說要在屏幕中央播放一個“游戲勝利”的閃爍動畫。上層邏輯的調(diào)用能夠讀取到本發(fā)明實(shí)施例提供的動畫資源,在軟件運(yùn)行過程中,當(dāng)需要播放動畫時,具體可以執(zhí)行如下步驟:
S01、上層邏輯調(diào)用動畫組件的播放接口,傳入動畫控制數(shù)據(jù)(即TFC文件)路徑。
S02、動畫組件解析XML文件,讀取每一幀動畫的圖片路徑、區(qū)域、時間間隔等。XML文件是TFC文件的保存格式。
S03、動畫組件調(diào)用圖片繪制引擎的接口,讓圖片繪制引擎能夠讀取繪制第一幀圖片源文件,同時啟動時鐘。
S04、動畫組件在時鐘點(diǎn)到達(dá)時,檢測已流逝時間,確定是否需要播放下一幀,如果需要,則通知圖片繪制引擎讀取繪制下一幀的圖片源文件。
S05、重復(fù)執(zhí)行S04直到滿足控制數(shù)據(jù)指定的停止條件。
本發(fā)明實(shí)施例能解決項(xiàng)目開發(fā)過程中繪制引擎變更、要求更新動畫畫質(zhì)而引發(fā)的動畫資源重做問題,對各種繪制引擎友好,實(shí)現(xiàn)動畫不需要額外的適配工作。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
為便于更好的實(shí)施本發(fā)明實(shí)施例的上述方案,下面還提供用于實(shí)施上述方案的相關(guān)裝置。
請參閱圖7-a所示,本發(fā)明實(shí)施例提供的一種動畫資源的配置裝置700,可以包括:圖片獲取模塊701、圖片合并模塊702、控制數(shù)據(jù)生成模塊703和數(shù)據(jù)分類打包模塊704,其中,
圖片獲取模塊701,用于根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件;
圖片合并模塊702,用于將所述至少兩個圖片源文件合并到圖片數(shù)據(jù)中,所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中分別處于不同的區(qū)域位置;
控制數(shù)據(jù)生成模塊703,用于根據(jù)所述幀配置信息和所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù);
數(shù)據(jù)分類打包模塊704,用于將所述控制數(shù)據(jù)和所述圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將所述兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。
在本發(fā)明的一些實(shí)施例中,請參閱圖7-b所示,所述動畫資源的配置裝置700還包括:格式轉(zhuǎn)換模塊705,其中,
所述格式轉(zhuǎn)換模塊705,用于所述圖片合并模塊702將所述至少兩個圖片源文件合并到圖片數(shù)據(jù)中之后,按照預(yù)置的圖片轉(zhuǎn)換格式對所述圖片數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換從而生成指定格式的圖片數(shù)據(jù)。
在本發(fā)明的一些實(shí)施例中,所述控制數(shù)據(jù)生成模塊703,具體用于根據(jù)所述幀配置信息和所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中的區(qū)域位置,按照可擴(kuò)展標(biāo)記語言XML格式生成控制數(shù)據(jù)。
在本發(fā)明的一些實(shí)施例中,所述控制數(shù)據(jù)包括:所述圖片數(shù)據(jù)的存儲路徑、所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中分別所處的區(qū)域位置、動畫播放時長、動畫播放次數(shù)、動畫播放完畢后是否隱藏播放窗口。
通過以上實(shí)施例對本發(fā)明實(shí)施例的描述可知,首先根據(jù)預(yù)先輸入的幀配置信息獲取配置給不同幀時間的至少兩個圖片源文件,然后將至少兩個圖片源文件合并到圖片數(shù)據(jù)中,至少兩個圖片源文件在圖片數(shù)據(jù)中分別處于不同的區(qū)域位置,接下來根據(jù)幀配置信息和至少兩個圖片源文件在圖片數(shù)據(jù)中的區(qū)域位置生成控制數(shù)據(jù),最后將控制數(shù)據(jù)和圖片數(shù)據(jù)分別存儲到兩個不同的文件數(shù)據(jù)包中,并將兩個不同的文件數(shù)據(jù)包打包在一起從而得到動畫資源。由于至少兩個圖片源文件在合并之后在圖片數(shù)據(jù)中處于不同的區(qū)域位置,因此在將控制數(shù)據(jù)和圖片數(shù)據(jù)分別打包存儲之后,兩個不同的文件數(shù)據(jù)包分別控制數(shù)據(jù)和圖片數(shù)據(jù),因此在需要對控制數(shù)據(jù)、圖片數(shù)據(jù)做更新時很容易實(shí)現(xiàn),無需重新制作動畫資源,簡化對動畫資源的管理,通過對控制數(shù)據(jù)的更新可以實(shí)現(xiàn)渲染優(yōu)化易操作,通過對圖片數(shù)據(jù)的更新可以實(shí)現(xiàn)畫質(zhì)修改易操作。
請參閱圖8-a所示,本發(fā)明實(shí)施例提供的一種動畫資源的播放裝置800,可以包括:動畫獲取模塊801、數(shù)據(jù)分類解析模塊802、圖片讀取模塊803和動畫播放模塊804,其中,
動畫獲取模塊801,用于獲取需要播放的動畫資源;
數(shù)據(jù)分類解析模塊802,用于從所述動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)所述兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù);
圖片讀取模塊803,用于根據(jù)所述控制數(shù)據(jù)從所述圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件;
動畫播放模塊804,用于根據(jù)所述控制數(shù)據(jù)在不同的幀時間依次播放所述至少兩個圖片源文件。
在本發(fā)明的一些實(shí)施例中,請參閱圖8-b所示,所述動畫資源的播放裝置800還包括:格式轉(zhuǎn)換模塊805,其中,
所述格式轉(zhuǎn)換模塊805,用于所述數(shù)據(jù)分類解析模塊802從所述動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)所述兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù)之后,按照預(yù)置的圖片轉(zhuǎn)換格式對所述圖片數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換從而生成指定格式的圖片數(shù)據(jù);
所述圖片讀取模塊803,具體用于根據(jù)所述控制數(shù)據(jù)從所述指定格式的圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件。
在本發(fā)明的一些實(shí)施例中,所述圖片讀取模塊803,具體用于調(diào)用圖片繪制引擎的接口,根據(jù)所述控制數(shù)據(jù)通過所述圖片繪制引擎依次讀取到所述圖片數(shù)據(jù)中處于不同區(qū)域位置的至少兩個圖片源文件。
在本發(fā)明的一些實(shí)施例中,所述動畫播放模塊804,具體用于根據(jù)所述控制數(shù)據(jù)播放在當(dāng)前幀時間讀取到的第一圖片源文件,并同時啟動時鐘;在所述時鐘到達(dá)時,檢測已流逝時間,根據(jù)所述控制數(shù)據(jù)確定是否需要播放下一幀,若需要播放下一幀,從所述圖片數(shù)據(jù)中讀取到第二圖片源文件,并按照前述播放第一圖片源文件的方式繼續(xù)播放所述第二圖片源文件,當(dāng)滿足所述控制數(shù)據(jù)指示的停止條件時,停止播放圖片源文件。
在本發(fā)明的一些實(shí)施例中,所述控制數(shù)據(jù)包括:所述圖片數(shù)據(jù)的存儲路徑、所述至少兩個圖片源文件在所述圖片數(shù)據(jù)中分別所處的區(qū)域位置、動畫播放時長、動畫播放次數(shù)、動畫播放完畢后是否隱藏播放窗口。
通過以上實(shí)施例對本發(fā)明實(shí)施例的描述可知,首先獲取需要播放的動畫資源,然后從動畫資源中解析出兩個不同的文件數(shù)據(jù)包,并根據(jù)兩個不同的文件數(shù)據(jù)包分別獲取到控制數(shù)據(jù)和圖片數(shù)據(jù),接下來根據(jù)控制數(shù)據(jù)從圖片數(shù)據(jù)的不同區(qū)域位置分別獲取到至少兩個圖片源文件,最后根據(jù)控制數(shù)據(jù)在不同的幀時間依次播放至少兩個圖片源文件。由于在動畫資源中是以兩個不同的文件數(shù)據(jù)包對控制數(shù)據(jù)和圖片數(shù)據(jù)分別打包存儲,因此在讀取圖片數(shù)據(jù)和控制數(shù)據(jù)可以在兩個文件數(shù)據(jù)包中分別完成,動畫資源的播放效率更高。
圖9是本發(fā)明實(shí)施例提供的一種服務(wù)器結(jié)構(gòu)示意圖,該服務(wù)器1100可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)1122(例如,一個或一個以上處理器)和存儲器1132,一個或一個以上存儲應(yīng)用程序1142或數(shù)據(jù)1144的存儲介質(zhì)1130(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器1132和存儲介質(zhì)1130可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)1130的程序可以包括一個或一個以上模塊(圖示沒標(biāo)出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1122可以設(shè)置為與存儲介質(zhì)1130通信,在服務(wù)器1100上執(zhí)行存儲介質(zhì)1130中的一系列指令操作。
服務(wù)器1100還可以包括一個或一個以上電源1126,一個或一個以上有線或無線網(wǎng)絡(luò)接口1150,一個或一個以上輸入輸出接口1158,和/或,一個或一個以上操作系統(tǒng)1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。
上述實(shí)施例中由服務(wù)器所執(zhí)行的動畫資源的配置方法的步驟可以基于該圖9所示的服務(wù)器結(jié)構(gòu)。
本發(fā)明實(shí)施例還提供了另一種終端,如圖10所示,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請參照本發(fā)明實(shí)施例方法部分。該終端可以為包括手機(jī)、平板電腦、PDA(Personal Digital Assistant,個人數(shù)字助理)、POS(Point of Sales,銷售終端)、車載電腦等任意終端設(shè)備,以終端為手機(jī)為例:
圖10示出的是與本發(fā)明實(shí)施例提供的終端相關(guān)的手機(jī)的部分結(jié)構(gòu)的框圖。參考圖10,手機(jī)包括:射頻(Radio Frequency,RF)電路1010、存儲器1020、輸入單元1030、顯示單元1040、傳感器1050、音頻電路1060、無線保真(wireless fidelity,WiFi)模塊1070、處理器1080、以及電源1090等部件。本領(lǐng)域技術(shù)人員可以理解,圖10中示出的手機(jī)結(jié)構(gòu)并不構(gòu)成對手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
下面結(jié)合圖10對手機(jī)的各個構(gòu)成部件進(jìn)行具體的介紹:
RF電路1010可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器1080處理;另外,將設(shè)計(jì)上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路1010包括但不限于天線、至少一個放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器(Low Noise Amplifier,LNA)、雙工器等。此外,RF電路1010還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(GlobalSystem of Mobile communication,GSM)、通用分組無線服務(wù)(General Packet Radio Service,GPRS)、碼分多址(Code Division Multiple Access,CDMA)、寬帶碼分多址(Wideband Code Division Multiple Access,WCDMA)、長期演進(jìn)(Long Term Evolution,LTE)、電子郵件、短消息服務(wù)(Short Messaging Service,SMS)等。
存儲器1020可用于存儲軟件程序以及模塊,處理器1080通過運(yùn)行存儲在存儲器1020的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器1020可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器1020可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。
輸入單元1030可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)的用戶設(shè)置以及功能控制有關(guān)的鍵信號輸入。具體地,輸入單元1030可包括觸控面板1031以及其他輸入設(shè)備1032。觸控面板1031,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1031上或在觸控面板1031附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置。可選的,觸控面板1031可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器1080,并能接收處理器1080發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板1031。除了觸控面板1031,輸入單元1030還可以包括其他輸入設(shè)備1032。具體地,其他輸入設(shè)備1032可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
顯示單元1040可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機(jī)的各種菜單。顯示單元1040可包括顯示面板1041,可選的,可以采用液晶顯示器(Liquid Crystal Display,LCD)、有機(jī)發(fā)光二極管(Organic Light-EmittingDiode,OLED)等形式來配置顯示面板1041。進(jìn)一步的,觸控面板1031可覆蓋顯示面板1041,當(dāng)觸控面板1031檢測到在其上或附近的觸摸操作后,傳送給處理器1080以確定觸摸事件的類型,隨后處理器1080根據(jù)觸摸事件的類型在顯示面板1041上提供相應(yīng)的視覺輸出。雖然在圖10中,觸控面板1031與顯示面板1041是作為兩個獨(dú)立的部件來實(shí)現(xiàn)手機(jī)的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板1031與顯示面板1041集成而實(shí)現(xiàn)手機(jī)的輸入和輸出功能。
手機(jī)還可包括至少一種傳感器1050,比如光傳感器、運(yùn)動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板1041的亮度,接近傳感器可在手機(jī)移動到耳邊時,關(guān)閉顯示面板1041和/或背光。作為運(yùn)動傳感器的一種,加速計(jì)傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計(jì)步器、敲擊)等;至于手機(jī)還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路1060、揚(yáng)聲器1061,傳聲器1062可提供用戶與手機(jī)之間的音頻接口。音頻電路1060可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P(yáng)聲器1061,由揚(yáng)聲器1061轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器1062將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路1060接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1080處理后,經(jīng)RF電路1010以發(fā)送給比如另一手機(jī),或者將音頻數(shù)據(jù)輸出至存儲器1020以便進(jìn)一步處理。
WiFi屬于短距離無線傳輸技術(shù),手機(jī)通過WiFi模塊1070可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖10示出了WiFi模塊1070,但是可以理解的是,其并不屬于手機(jī)的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器1080是手機(jī)的控制中心,利用各種接口和線路連接整個手機(jī)的各個部分,通過運(yùn)行或執(zhí)行存儲在存儲器1020內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器1020內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器1080可包括一個或多個處理單元;優(yōu)選的,處理器1080可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信。可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器1080中。
手機(jī)還包括給各個部件供電的電源1090(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器1080邏輯相連,從而通過電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。
盡管未示出,手機(jī)還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。
在本發(fā)明實(shí)施例中,該終端所包括的處理器1080還具有控制執(zhí)行以上由終端執(zhí)行的動畫資源的播放方法流程。
另外需說明的是,以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,本發(fā)明提供的裝置實(shí)施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實(shí)現(xiàn)為一條或多條通信總線或信號線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元器件等來實(shí)現(xiàn)。一般情況下,凡由計(jì)算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來實(shí)現(xiàn),而且,用來實(shí)現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,對本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計(jì)算機(jī)的軟盤,U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。
綜上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照上述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對上述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。