欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種多個(gè)動(dòng)畫文件的合并顯示方法

文檔序號(hào):6537151閱讀:198來(lái)源:國(guó)知局
專利名稱:一種多個(gè)動(dòng)畫文件的合并顯示方法
技術(shù)領(lǐng)域
本發(fā)明涉及動(dòng)畫制作技術(shù)領(lǐng)域,尤其涉及一種多個(gè)動(dòng)畫文件的合并顯示方法。
背景技術(shù)
當(dāng)前,即時(shí)通訊(IM)工具已經(jīng)得到越來(lái)越廣泛的應(yīng)用,人們?cè)诶肐M工具實(shí)現(xiàn)即時(shí)通信的同時(shí),對(duì)IM工具的服務(wù)質(zhì)量也有了更高的要求,其中,由于顯示在IM工具上的個(gè)人虛擬形象能夠代表IM工具使用者的許多特征,因此,備受IM工具使用者的關(guān)注,由此,需要提高IM工具上個(gè)人虛擬形象的顯示質(zhì)量,以達(dá)到提高IM工具服務(wù)質(zhì)量的需要。
在現(xiàn)有技術(shù)中,采用動(dòng)畫圖像作為個(gè)人虛擬形象,以替代最初所采用的靜止圖像,以達(dá)到提高顯示質(zhì)量的需要。在實(shí)際應(yīng)用過(guò)程中,允許IM工具使用者在例如臉形、發(fā)型、衣服、背景、裝飾物等虛擬形象組成元素中進(jìn)行選擇,以利用所選擇的元素最終構(gòu)成動(dòng)畫圖像來(lái)作為虛擬形象。各個(gè)組成元素分別具有多個(gè)備選元素以供選擇,各個(gè)備選元素分別以動(dòng)畫文件的形式保存,當(dāng)IM工具使用者選擇相應(yīng)的備選元素后,通過(guò)預(yù)先提供的腳本命令,將這些備選元素所對(duì)應(yīng)的動(dòng)畫文件動(dòng)態(tài)加載到一個(gè)動(dòng)畫文件中,通過(guò)顯示該動(dòng)畫文件則可實(shí)現(xiàn)以動(dòng)畫的方式顯示個(gè)人虛擬形象。
在現(xiàn)有技術(shù)中,只是通過(guò)腳本命令將各個(gè)動(dòng)畫文件動(dòng)態(tài)加載到一個(gè)動(dòng)畫文件中,實(shí)際上并沒(méi)有將各個(gè)動(dòng)畫文件合并到一個(gè)動(dòng)畫文件中,這樣做雖然能夠在視覺(jué)效果上達(dá)到合并多個(gè)動(dòng)畫文件的效果,但是,由于各個(gè)動(dòng)畫文件分別具有各自的存放路徑,因此,需要提供這些存放路徑給腳本命令,腳本命令還需要根據(jù)這些存放路徑分別獲得各個(gè)動(dòng)畫文件來(lái)實(shí)現(xiàn)動(dòng)態(tài)加載,從而增加了合并多個(gè)動(dòng)畫的工作量和實(shí)現(xiàn)難度,不利于采用動(dòng)畫方式作為個(gè)人虛擬形象的具體實(shí)現(xiàn)。同樣,在其它需要將多個(gè)動(dòng)畫合并顯示的實(shí)際應(yīng)用中,由于現(xiàn)有技術(shù)并沒(méi)有將多個(gè)動(dòng)畫文件實(shí)際合并到一個(gè)動(dòng)畫文件中,因此,也存著上述工作量大以及不易實(shí)現(xiàn)的問(wèn)題。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種多個(gè)動(dòng)畫文件的合并顯示方法,該方法能夠?qū)⒍鄠€(gè)需要合并顯示的動(dòng)畫文件實(shí)際合并到一個(gè)動(dòng)畫文件中并顯示,從而減少多個(gè)動(dòng)畫合并顯示過(guò)程中的工作量,降低實(shí)現(xiàn)難度。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種多個(gè)動(dòng)畫文件的合并顯示方法,該方法包括步驟A為各個(gè)需要合并的動(dòng)畫文件分配獨(dú)立的顯示層;步驟B將各個(gè)動(dòng)畫文件的顯示內(nèi)容放置到各自所分配得到的層中;步驟C將所有層中的顯示內(nèi)容在一幀中按照一定的層次關(guān)系全部顯示出來(lái)。
其中,所述動(dòng)畫文件為震蕩波格式(Swf)文件,步驟A包括步驟A1為需要合并的動(dòng)畫文件分別創(chuàng)建子動(dòng)畫;步驟A2為所創(chuàng)建的子動(dòng)畫分別分配獨(dú)立的顯示層。
其中,步驟A1為按照各個(gè)Swf文件合并的先后次序,順序?yàn)槊總€(gè)需要合并的Swf文件創(chuàng)建一個(gè)動(dòng)畫定義標(biāo)簽塊,并為各個(gè)動(dòng)畫定義標(biāo)簽塊分別確定一個(gè)全局唯一的對(duì)象標(biāo)識(shí);步驟A2為為每個(gè)創(chuàng)建的動(dòng)畫定義標(biāo)簽塊分別創(chuàng)建一個(gè)與之對(duì)應(yīng)的放置對(duì)象標(biāo)簽塊,確定每個(gè)放置對(duì)象標(biāo)簽塊所指明的二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào)),其中,確定該二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的對(duì)象標(biāo)識(shí)為與該放置對(duì)象標(biāo)簽塊相對(duì)應(yīng)的動(dòng)畫定義標(biāo)簽塊的對(duì)象標(biāo)識(shí),確定該二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的層序號(hào)為一個(gè)未被其它顯示對(duì)象占用的層的層序號(hào)。
其中,所述為各個(gè)動(dòng)畫定義標(biāo)簽塊分別確定一個(gè)全局唯一的對(duì)象標(biāo)識(shí)為
將需要合并的Swf文件的順序號(hào)作為為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊的對(duì)象標(biāo)識(shí)。
其中,所述確定該二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的層序號(hào)為一個(gè)未被其它顯示對(duì)象占用的層的層序號(hào)為將需要合并的Swf文件的順序號(hào)作為為該Swf文件所分配的獨(dú)立的層的層序號(hào),將該層序號(hào)作為所述二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的層序號(hào)。
其中,所述動(dòng)畫文件為Swf文件,步驟B包括步驟B0更新需要合并的動(dòng)畫文件的顯示對(duì)象標(biāo)識(shí),以使得該顯示對(duì)象標(biāo)識(shí)在合并之后全局唯一;步驟B1將需要合并的Swf文件的定義標(biāo)簽塊放置到為該文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之前;步驟B2將需要合并的Swf文件的控制標(biāo)簽塊放置到為該文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之中,作為該動(dòng)畫定義標(biāo)簽塊的子動(dòng)畫標(biāo)簽塊;步驟B3需要合并的Swf文件利用為其所創(chuàng)建的放置對(duì)象標(biāo)簽塊,將為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊所定義的顯示內(nèi)容放置到為該Swf文件所分配的獨(dú)立的顯示層中。
其中,在步驟B0中,所述更新各個(gè)動(dòng)畫文件的顯示對(duì)象標(biāo)識(shí)為遍歷需要合并的Swf文件中的每個(gè)標(biāo)簽塊的各個(gè)對(duì)象標(biāo)識(shí),為標(biāo)簽塊中出現(xiàn)與已經(jīng)分配的對(duì)象標(biāo)識(shí)相沖突的對(duì)象標(biāo)識(shí)重新分配對(duì)象標(biāo)識(shí),并將在該Swf文件的其余標(biāo)簽塊中出現(xiàn)的該對(duì)象標(biāo)識(shí)也更新為重新分配后的對(duì)象標(biāo)識(shí)。
其中,該方法進(jìn)一步包括分別統(tǒng)計(jì)各個(gè)需要合并的Swf文件中的顯示幀標(biāo)簽塊的個(gè)數(shù),然后分別用統(tǒng)計(jì)得到的個(gè)數(shù)更新對(duì)應(yīng)的為Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊中的幀數(shù)值。
其中,步驟B3中,所述將為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊所定義的顯示內(nèi)容放置到為該Swf文件所分配的獨(dú)立的顯示層中為放置對(duì)象標(biāo)簽塊將其所指明的二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))添加到顯示列表中;其中,對(duì)象標(biāo)識(shí)為所述為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊的對(duì)象標(biāo)識(shí),層序號(hào)為所述為該Swf文件所分配的獨(dú)立的顯示層的序號(hào)。
其中,步驟C包括顯示幀標(biāo)簽塊,根據(jù)顯示列表中的各個(gè)二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))的內(nèi)容,在一幀中依次播放各層的顯示內(nèi)容。
可見(jiàn),本發(fā)明能夠?qū)⑿枰喜@示的多個(gè)動(dòng)畫文件實(shí)際合并到一個(gè)動(dòng)畫文件中,無(wú)需在合并顯示過(guò)程中使用各個(gè)動(dòng)畫文件的存放路徑,從而減少了動(dòng)畫文件合并顯示過(guò)程中的工作量,降低了動(dòng)畫文件合并顯示的實(shí)現(xiàn)難度。


圖1為本發(fā)明一實(shí)施例中第5個(gè)Swf文件的示意圖。
圖2為實(shí)現(xiàn)本發(fā)明的流程圖。
圖3為本發(fā)明中構(gòu)建的Swf原型的示意圖。
圖4為本發(fā)明中更新對(duì)象標(biāo)識(shí)之后的第5個(gè)Swf文件的示意圖。
圖5示出了本發(fā)明一實(shí)施例中,將第5個(gè)Swf文件合并到Swf原型中后的結(jié)果。
具體實(shí)施例方式
本發(fā)明為一種多個(gè)動(dòng)畫文件的合并顯示方法,該方法為各個(gè)需要合并顯示的動(dòng)畫文件分別分配唯一的顯示層,并且更新各個(gè)動(dòng)畫文件中的對(duì)象標(biāo)識(shí)值,使得各個(gè)對(duì)象標(biāo)識(shí)值在合并后的動(dòng)畫文件中全局唯一,然后,將各個(gè)動(dòng)畫文件的顯示內(nèi)容放置到各自所分配得到的層中,最后,再將所有層中的顯示內(nèi)容在一幀中按照一定的層次關(guān)系全部顯示出來(lái),從而實(shí)現(xiàn)多個(gè)動(dòng)畫文件的合并顯示。
下面,以Flash技術(shù)中的動(dòng)畫合并顯示為例,對(duì)本發(fā)明進(jìn)行詳細(xì)描述,該描述的目的只在于對(duì)本發(fā)明進(jìn)行說(shuō)明,并不在于限定本發(fā)明的保護(hù)范圍,本發(fā)明同樣可以應(yīng)用于其它形式的動(dòng)畫文件之中。
在Flash的實(shí)際應(yīng)用中,動(dòng)畫文件以震蕩波格式(Swf)文件格式保存,Swf文件播放器讀取Swf文件中的內(nèi)容并根據(jù)該內(nèi)容播放Flash動(dòng)畫。Swf文件由頭部信息和數(shù)據(jù)信息組成,其中,頭部信息包括播放該Swf文件所需要的一些公共信息,例如是否壓縮、版本信息、顯示區(qū)域等,數(shù)據(jù)信息則由多個(gè)標(biāo)簽塊(Tag)順序組成,每個(gè)標(biāo)簽塊分別具有各自的標(biāo)簽類型(Tid)、標(biāo)簽塊長(zhǎng)度、以及標(biāo)簽塊數(shù)據(jù),結(jié)束(end)標(biāo)簽塊位于Swf文件的末尾,作為該文件的結(jié)束標(biāo)志。
上述的標(biāo)簽塊分為兩類,分別是定義標(biāo)簽塊(Definition tag)和控制標(biāo)簽塊(Control tag),其中每個(gè)定義標(biāo)簽塊用于定義一個(gè)對(duì)象,并為每個(gè)對(duì)象分配一個(gè)唯一的對(duì)象標(biāo)識(shí)(Cid),定義標(biāo)簽塊分為兩種類型,下面分別對(duì)這兩種類型進(jìn)行介紹1、形狀定義(DefineShape2)標(biāo)簽塊,該標(biāo)簽塊的Tid為22,用于為對(duì)象定義例如圓形、矩形等的形狀,并為所定義的對(duì)象分配一個(gè)Cid;2、動(dòng)畫定義(DefineSprite)標(biāo)簽塊,該標(biāo)簽塊的Tid為39,用于定義一個(gè)動(dòng)畫對(duì)象并為該動(dòng)畫對(duì)象分配一個(gè)Cid,同時(shí),該標(biāo)簽塊還指明該動(dòng)畫所包含的幀數(shù)(FC,F(xiàn)rameCount);動(dòng)畫定義標(biāo)簽塊中的標(biāo)簽塊數(shù)據(jù)又是由一組嵌套的子標(biāo)簽塊組成,這些子標(biāo)簽塊只能是控制標(biāo)簽塊,而不能包含任何定義標(biāo)簽塊;通過(guò)動(dòng)畫定義標(biāo)簽塊,實(shí)際上相當(dāng)于在主動(dòng)畫下定義一個(gè)子動(dòng)畫,這樣,在顯示主動(dòng)畫的過(guò)程中,就能夠通過(guò)調(diào)用子動(dòng)畫實(shí)現(xiàn)將主動(dòng)畫和子動(dòng)畫以一定的幀率同時(shí)播出。
以上對(duì)定義標(biāo)簽塊進(jìn)行了介紹,下面對(duì)控制標(biāo)簽塊進(jìn)行介紹控制標(biāo)簽塊用于負(fù)責(zé)對(duì)動(dòng)畫顯示過(guò)程中的操作進(jìn)行控制,主要包括三種類型1、顯示幀(ShowFrame)標(biāo)簽塊,該標(biāo)簽塊的Tid為1,用于顯示當(dāng)前幀;在Swf播放器中,設(shè)置了一個(gè)顯示列表,該顯示列表由多個(gè)二元數(shù)組組成,每個(gè)二元數(shù)組的組成形式為(Lid,Cid),其中,Lid表示層的層序號(hào),該二元數(shù)組表示在第Lid層上顯示對(duì)象標(biāo)識(shí)為Cid的對(duì)象;對(duì)于動(dòng)畫中所定義的各個(gè)對(duì)象,每一層只能放置一個(gè)對(duì)象,并且,放在上層的對(duì)象將覆蓋放在下層的對(duì)象,顯示幀標(biāo)簽塊根據(jù)顯示列表中的各個(gè)二元數(shù)組的內(nèi)容,將各個(gè)顯示對(duì)象按照一定的先后的層次順序顯示出來(lái);2、放置對(duì)象(PlaceObject2)標(biāo)簽塊,該標(biāo)簽塊的Tid為26,該標(biāo)簽塊指明Lid和一個(gè)Cid,用于在顯示列表中增加由該Lid和Cid所構(gòu)成的二元數(shù)組(Lid,Cid),通過(guò)這種方式,能夠?qū)id所對(duì)應(yīng)的對(duì)象放置到Lid所對(duì)應(yīng)的層;該標(biāo)簽塊只用于放置,并不用于顯示所放置的對(duì)象,而是需要后續(xù)的顯示幀標(biāo)簽塊出現(xiàn)時(shí)才顯示相應(yīng)對(duì)象;3、移出對(duì)象(RemoveObject2)標(biāo)簽塊,該標(biāo)簽塊的Tid為28,該標(biāo)簽塊同樣指明Lid和一個(gè)Cid,但與放置對(duì)象標(biāo)簽塊相反的是,該標(biāo)簽塊將該Lid和Cid所構(gòu)成的二元數(shù)組(Lid,Cid)從顯示列表中刪除,以便將Cid所對(duì)應(yīng)的對(duì)象從Lid所對(duì)應(yīng)的層移出,在利用該標(biāo)簽塊移出對(duì)象之后,后續(xù)的顯示幀標(biāo)簽塊出現(xiàn)時(shí),就不再會(huì)將顯示類標(biāo)中的第Lid層上的Cid對(duì)象顯示出來(lái)了。
另外,在Swf文件中,還經(jīng)常會(huì)出現(xiàn)動(dòng)畫定義標(biāo)簽塊嵌套子動(dòng)畫標(biāo)簽塊的情況,其中,各個(gè)子動(dòng)畫標(biāo)簽塊分別具有各自獨(dú)立的顯示列表以及用于顯示各個(gè)對(duì)象的一組層,從而使得各個(gè)子動(dòng)畫標(biāo)簽塊之間、以及子動(dòng)畫標(biāo)簽塊和動(dòng)畫定義標(biāo)簽塊之間不會(huì)出現(xiàn)層的相互沖突問(wèn)題;下面結(jié)合一個(gè)具體實(shí)例,對(duì)子動(dòng)畫標(biāo)簽塊的嵌套進(jìn)行介紹參見(jiàn)圖1,在一個(gè)Swf文件中,定義動(dòng)畫標(biāo)簽塊(Tid=39)嵌套了子動(dòng)畫標(biāo)簽塊,該子動(dòng)畫標(biāo)簽塊依次為放置對(duì)象標(biāo)簽塊(Tid=26),該標(biāo)簽塊指明一個(gè)二元數(shù)組(1,1),從而將Cid為1的對(duì)象放置在該子動(dòng)畫標(biāo)簽塊中的第1層;顯示幀標(biāo)簽塊(Tid=1),該標(biāo)簽塊顯示該子動(dòng)畫標(biāo)簽塊中的第1層的Cid為1的對(duì)象,從而顯示子動(dòng)畫標(biāo)簽塊的第一幀;
放置對(duì)象標(biāo)簽塊(Tid=26),該標(biāo)簽塊指明一個(gè)二元數(shù)組(2,2),從而將Cid為2的對(duì)象放置在該子動(dòng)畫標(biāo)簽塊中的第2層;顯示幀標(biāo)簽塊(Tid=1),該標(biāo)簽塊顯示該子動(dòng)畫標(biāo)簽塊中的第2層的Cid為2的對(duì)象,從而顯示子動(dòng)畫標(biāo)簽塊的第二幀;結(jié)束標(biāo)簽塊(Tid=0),用于表示該子動(dòng)畫標(biāo)簽塊結(jié)束。
參見(jiàn)圖1,在運(yùn)行該Swf文件的過(guò)程中,控制標(biāo)簽塊中的放置對(duì)象標(biāo)簽塊(Tid=26)將動(dòng)畫定義標(biāo)簽塊(Tid=39,Cid=3)所定義的動(dòng)畫放置到第1層,由于動(dòng)畫定義標(biāo)簽塊(Tid=39,Cid=3)嵌套有如上所述的子動(dòng)畫標(biāo)簽塊,因此,運(yùn)行所嵌套的子動(dòng)畫標(biāo)簽塊之后,能夠?qū)id為1的對(duì)象以及Cid為2的對(duì)象依次顯示在第1層中。
以下,對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
參見(jiàn)圖2,實(shí)現(xiàn)本發(fā)明需要以下步驟步驟201為各個(gè)需要合并的動(dòng)畫文件分配獨(dú)立的顯示層;步驟202將各個(gè)動(dòng)畫文件的顯示內(nèi)容放置到各自所分配得到的層中;步驟203將所有層中的顯示內(nèi)容在一幀中按照一定的層次關(guān)系全部顯示出來(lái),從而實(shí)現(xiàn)多個(gè)動(dòng)畫文件的合并顯示。
下面對(duì)以上步驟的具體實(shí)現(xiàn)進(jìn)行介紹一、步驟201的具體實(shí)現(xiàn)參見(jiàn)圖3,在本發(fā)明實(shí)施例中,通過(guò)構(gòu)建圖3所示的Swf原型,來(lái)實(shí)現(xiàn)為各個(gè)需要合并的Swf文件分配獨(dú)立的顯示層,具體為按照各個(gè)Swf文件合并的先后次序,順序?yàn)槊總€(gè)需要合并的Swf文件創(chuàng)建一個(gè)動(dòng)畫定義標(biāo)簽塊(Tid=39),并為每個(gè)動(dòng)畫定義標(biāo)簽塊分別確定一個(gè)全局唯一的Cid,通過(guò)創(chuàng)建動(dòng)畫定義標(biāo)簽塊實(shí)現(xiàn)為需要合并的動(dòng)畫文件分別創(chuàng)建子動(dòng)畫,然后,為創(chuàng)建的動(dòng)畫定義標(biāo)簽塊分別創(chuàng)建一個(gè)與之對(duì)應(yīng)的放置對(duì)象標(biāo)簽塊(Tid=26),確定每個(gè)放置對(duì)象標(biāo)簽塊所指明的二元數(shù)組(Cid,Lid),其中,確定該二元數(shù)組(Cid,Lid)中的Cid為與該放置對(duì)象標(biāo)簽塊成組對(duì)應(yīng)的動(dòng)畫定義標(biāo)簽塊的Cid,確定該二元數(shù)組(Cid,Lid)中的Lid為一個(gè)未被其它顯示對(duì)象占用的層的層序號(hào),從而實(shí)現(xiàn)為各個(gè)創(chuàng)建的子動(dòng)畫分配獨(dú)立的顯示層,進(jìn)而利用子動(dòng)畫實(shí)現(xiàn)為各個(gè)Swf文件分配獨(dú)立的顯示層;在本發(fā)明優(yōu)選實(shí)施例中,為了簡(jiǎn)化運(yùn)算,為創(chuàng)建的動(dòng)畫定義標(biāo)簽塊確定Cid,以及確定該二元數(shù)組(Cid,Lid)中的Lid為一個(gè)未被其它顯示對(duì)象占用的層的層序號(hào)可采用如下方式進(jìn)行將需要合并的Swf文件的順序號(hào)作為為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊的Cid;將需要合并的Swf文件的順序號(hào)作為為該Swf文件所分配的獨(dú)立的層的層序號(hào),將該層序號(hào)作為所述二元數(shù)組(Cid,Lid)中的Lid;進(jìn)一步的,為了更加簡(jiǎn)化運(yùn)算,在本發(fā)明優(yōu)選實(shí)施例中,可以采用需要合并的Swf文件作為為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊的Cid,并將為該Swf文件所創(chuàng)建的放置對(duì)象標(biāo)簽塊所指明的二元數(shù)組中的Cid和Lid直接分別指定為該Swf文件的序號(hào)。圖3所示就是這一優(yōu)選實(shí)施例的具體實(shí)現(xiàn),由圖3可見(jiàn)共有N個(gè)需要合并的Swf文件,其中N為自然數(shù),分別為每個(gè)Swf創(chuàng)建動(dòng)畫定義標(biāo)簽塊和放置對(duì)象標(biāo)簽塊,其中,動(dòng)畫定義標(biāo)簽塊的Cid分別為該動(dòng)畫定義標(biāo)簽塊所對(duì)應(yīng)的Swf文件的序號(hào),放置對(duì)象標(biāo)簽塊所指明的二元數(shù)組則為(i,i)的形式,其中,i為該放置對(duì)象標(biāo)簽塊所對(duì)應(yīng)的Swf文件的序號(hào);在圖3中,由于初始狀態(tài)下動(dòng)畫定義標(biāo)簽塊所包含的子動(dòng)畫幀數(shù)為0,因此,各個(gè)動(dòng)畫定義標(biāo)簽塊的FC參數(shù)分別初始化為0。
二、步驟202的具體實(shí)現(xiàn)在步驟202的具體實(shí)現(xiàn)中,需要對(duì)各個(gè)動(dòng)畫文件的顯示對(duì)象標(biāo)識(shí)進(jìn)行更新,以避免出現(xiàn)顯示對(duì)象標(biāo)識(shí)相互沖突的問(wèn)題,下面對(duì)該更新過(guò)程進(jìn)行介紹在一個(gè)Swf文件中,所有的對(duì)象標(biāo)識(shí)Cid必須全局唯一,因此,在本發(fā)明中必須為每個(gè)需要合并的Swf文件進(jìn)行Cid的更新,以滿足該要求;在本發(fā)明實(shí)施例中,設(shè)計(jì)一個(gè)全局的Cid分配器,該分配器遍歷需要合并的Swf文件中的每個(gè)標(biāo)簽塊的各個(gè)對(duì)象標(biāo)識(shí),為標(biāo)簽塊中出現(xiàn)與已經(jīng)分配的對(duì)象標(biāo)識(shí)相沖突的對(duì)象標(biāo)識(shí)重新分配對(duì)象標(biāo)識(shí),并將在該Swf文件的其余標(biāo)簽塊中出現(xiàn)的該對(duì)象標(biāo)識(shí)也更新為重新分配后的對(duì)象標(biāo)識(shí);例如,在將形狀定義標(biāo)簽塊的Cid重新分配之后,需要將出現(xiàn)在例如放置對(duì)象標(biāo)簽塊和移出對(duì)象標(biāo)簽塊中的該Cid也更新為重新分配后的Cid;在進(jìn)行對(duì)象標(biāo)識(shí)更新后,實(shí)現(xiàn)步驟202還需要以下步驟步驟2021將需要合并的Swf文件的定義標(biāo)簽塊放置到為該文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之前;進(jìn)行該步驟的原因在于由于Swf播放器規(guī)定,在顯示一幀時(shí),顯示列表中所涉及到的對(duì)象都必須在顯示幀標(biāo)簽塊之前被定義,因此,需要將Swf文件中的所有定義標(biāo)簽塊放置在與其對(duì)應(yīng)的動(dòng)畫定義標(biāo)簽塊之前;步驟2022將需要合并的Swf文件的控制標(biāo)簽塊放置到為該文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之中,作為該動(dòng)畫定義標(biāo)簽塊的子動(dòng)畫標(biāo)簽塊;由于控制標(biāo)簽塊決定了如何播放已經(jīng)定義的各個(gè)對(duì)象,因此,將Swf文件中的控制標(biāo)簽塊作為為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之中,就可以實(shí)現(xiàn)將一個(gè)Swf文件中的顯示內(nèi)容合并到一個(gè)子動(dòng)畫中;步驟2023需要合并的Swf文件利用為其所創(chuàng)建的放置對(duì)象標(biāo)簽塊,將為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊所定義的顯示內(nèi)容放置到為該Swf文件所分配的獨(dú)立的顯示層中;在本發(fā)明實(shí)施例中,根據(jù)放置對(duì)象標(biāo)簽塊所指明的二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào)),實(shí)現(xiàn)將對(duì)象標(biāo)識(shí)所對(duì)應(yīng)的動(dòng)畫定義標(biāo)簽塊中的顯示內(nèi)容放置到層序號(hào)所對(duì)應(yīng)的層中;其中,放置對(duì)象標(biāo)簽塊通過(guò)將其所指明的二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))添加到顯示列表中,實(shí)現(xiàn)將對(duì)象標(biāo)識(shí)所對(duì)應(yīng)的動(dòng)畫定義標(biāo)簽塊中的顯示內(nèi)容放置到層序號(hào)所對(duì)應(yīng)的層中,但是并不顯示動(dòng)畫定義標(biāo)簽塊中的顯示內(nèi)容;
通過(guò)以上步驟即可實(shí)現(xiàn)步驟202,在本發(fā)明其它實(shí)施例中,為了能夠更好的滿足動(dòng)畫顯示的需要,還可進(jìn)一步包括以下步驟步驟2024分別統(tǒng)計(jì)各個(gè)需要合并的Swf文件中的顯示幀標(biāo)簽塊的個(gè)數(shù),然后分別用統(tǒng)計(jì)得到的個(gè)數(shù)更新對(duì)應(yīng)的為Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊中的FC值。
三、步驟203的具體實(shí)現(xiàn)利用顯示幀標(biāo)簽塊,根據(jù)顯示列表中的各個(gè)二元數(shù)組內(nèi)容,在一幀中依次播放各層的顯示內(nèi)容,從而在一幀中實(shí)現(xiàn)多個(gè)Swf文件的合并播放;參見(jiàn)圖3,在本發(fā)明實(shí)施例中,預(yù)先在Swf原型中所有新創(chuàng)建的動(dòng)畫定義標(biāo)簽塊和放置對(duì)象標(biāo)簽塊之后的創(chuàng)建顯示幀標(biāo)簽塊,利用該顯示幀標(biāo)簽塊來(lái)實(shí)現(xiàn)上述播放步驟。同樣參照?qǐng)D3,為了使得合并后的Swf文件完整,在該Swf文件的最后還包括結(jié)束標(biāo)簽塊。
下面,以第5個(gè)Swf文件的合并過(guò)程為例,對(duì)上述步驟的具體實(shí)現(xiàn)再加以更加具體的描述,其中,在Swf5文件中,先利用形狀定義標(biāo)簽塊(Tid=22)定義了兩個(gè)物體形狀,然后利用動(dòng)畫定義標(biāo)簽塊(Tid=39)定義一個(gè)包含2幀子動(dòng)畫,接著就利用放置對(duì)象標(biāo)簽塊(Tid=26)將所定義的動(dòng)畫放置到顯示列表中,最后顯示列表中的內(nèi)容,整個(gè)Swf文件共一幀。在子動(dòng)畫中,先將Cid=1的對(duì)象放置到顯示列表的第一層,并且顯示第一幀,此時(shí)顯示的內(nèi)容只有Cid=1的對(duì)象;接著,將Cid=2的對(duì)象放置到顯示列表的第二層,并且顯示第二幀,此時(shí)顯示的內(nèi)容包含Cid=1和Cid=2的兩個(gè)對(duì)象;以下描述為合并的具體過(guò)程首先,創(chuàng)建如圖3所示的Swf原型,該原型表示共有N個(gè)Swf文件需要合并,其中,N表示Swf文件的個(gè)數(shù),是自然數(shù);通過(guò)創(chuàng)建該原型能夠?qū)崿F(xiàn)為包括第5個(gè)Swf文件在內(nèi)的各個(gè)需要合并的Swf文件分配各自獨(dú)立的顯示層;然后,更新各個(gè)Swf文件中的Cid,其中,第5個(gè)Swf文件的初始內(nèi)容如圖1所示,假設(shè)當(dāng)執(zhí)行到合并第5個(gè)Swf文件時(shí),Cid分配器中的Cid值已經(jīng)分配到10,所以,第5個(gè)Swf文件中,Cid=1的形狀定義標(biāo)簽塊(Tid=22)將被更新為Cid=11;Cid=2的形狀定義標(biāo)簽塊(Tid=22)將被更新為Cid=12;Cid=3的動(dòng)畫定義標(biāo)簽塊(Tid=39)將被更新為Cid=13;并且,將在其余標(biāo)簽塊中出現(xiàn)的上述Cid也修改為更新后的Cid,執(zhí)行完這一步驟后,第5個(gè)Swf文件的內(nèi)容如圖4所示;通過(guò)上述這兩步,實(shí)際上實(shí)現(xiàn)了上述的步驟201,接下來(lái),將圖4所示更新后的第5個(gè)Swf文件中的定義標(biāo)簽塊放置到圖3所示Swf原型中的Swf5之前,并且,將圖4所示更新后的第5個(gè)Swf文件中的控制標(biāo)簽塊放置到圖3所示Swf原型中的Swf5的動(dòng)畫定義標(biāo)簽塊(Tid=39)中,作為該動(dòng)畫定義標(biāo)簽塊的子動(dòng)畫標(biāo)簽塊,實(shí)現(xiàn)了上述步驟202;圖5示出了將第5個(gè)Swf文件合并到Swf原型中后的結(jié)果,其中,圖5只示出了合并后的原型的一部分;最后,在將各個(gè)Swf文件按照與第5個(gè)Swf文件相一致的方式合并到圖3所示的Swf原型中后,再利用Swf原型中的顯示幀標(biāo)簽塊在一幀中顯示各層的顯示內(nèi)容,從而實(shí)現(xiàn)步驟203。合并的最終效果只顯示一幀的內(nèi)容,而這一幀的內(nèi)容包含了N個(gè)子動(dòng)畫。當(dāng)Swf播放器解析顯示幀標(biāo)簽塊時(shí),此時(shí)的顯示列表中將有N個(gè)二元組,每個(gè)二元組表示在第i層上顯示對(duì)象標(biāo)識(shí)為i的對(duì)象。這樣,就達(dá)到了N個(gè)Swf文件同時(shí)顯示的效果,并且,N個(gè)Swf文件的前后覆蓋關(guān)系直接依賴于輸入N個(gè)Swf文件的先后順序,即第1個(gè)Swf的內(nèi)容在最底層,而第N個(gè)Swf的內(nèi)容在最高層。
以上所述為針對(duì)Swf作為動(dòng)畫文件的情況下,本發(fā)明的具體實(shí)現(xiàn),依據(jù)本發(fā)明所體現(xiàn)的精神,也可以對(duì)其它格式的動(dòng)畫文件實(shí)現(xiàn)本發(fā)明。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種多個(gè)動(dòng)畫文件的合并顯示方法,其特征在于,該方法包括步驟A為各個(gè)需要合并的動(dòng)畫文件分配獨(dú)立的顯示層;步驟B將各個(gè)動(dòng)畫文件的顯示內(nèi)容放置到各自所分配得到的層中;步驟C將所有層中的顯示內(nèi)容在一幀中按照一定的層次關(guān)系全部顯示出來(lái)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述動(dòng)畫文件為震蕩波格式(Swf)文件,步驟A包括步驟A1為需要合并的動(dòng)畫文件分別創(chuàng)建子動(dòng)畫;步驟A2為所創(chuàng)建的子動(dòng)畫分別分配獨(dú)立的顯示層。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A1為按照各個(gè)Swf文件合并的先后次序,順序?yàn)槊總€(gè)需要合并的Swf文件創(chuàng)建一個(gè)動(dòng)畫定義標(biāo)簽塊,并為各個(gè)動(dòng)畫定義標(biāo)簽塊分別確定一個(gè)全局唯一的對(duì)象標(biāo)識(shí);步驟A2為為每個(gè)創(chuàng)建的動(dòng)畫定義標(biāo)簽塊分別創(chuàng)建一個(gè)與之對(duì)應(yīng)的放置對(duì)象標(biāo)簽塊,確定每個(gè)放置對(duì)象標(biāo)簽塊所指明的二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào)),其中,確定該二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的對(duì)象標(biāo)識(shí)為與該放置對(duì)象標(biāo)簽塊相對(duì)應(yīng)的動(dòng)畫定義標(biāo)簽塊的對(duì)象標(biāo)識(shí),確定該二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的層序號(hào)為一個(gè)未被其它顯示對(duì)象占用的層的層序號(hào)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述為各個(gè)動(dòng)畫定義標(biāo)簽塊分別確定一個(gè)全局唯一的對(duì)象標(biāo)識(shí)為將需要合并的Swf文件的順序號(hào)作為為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊的對(duì)象標(biāo)識(shí)。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述確定該二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的層序號(hào)為一個(gè)未被其它顯示對(duì)象占用的層的層序號(hào)為將需要合并的Swf文件的順序號(hào)作為為該Swf文件所分配的獨(dú)立的層的層序號(hào),將該層序號(hào)作為所述二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))中的層序號(hào)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述動(dòng)畫文件為Swf文件,步驟B包括步驟B0更新需要合并的動(dòng)畫文件的顯示對(duì)象標(biāo)識(shí),以使得該顯示對(duì)象標(biāo)識(shí)在合并之后全局唯一;步驟B1將需要合并的Swf文件的定義標(biāo)簽塊放置到為該文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之前;步驟B2將需要合并的Swf文件的控制標(biāo)簽塊放置到為該文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊之中,作為該動(dòng)畫定義標(biāo)簽塊的子動(dòng)畫標(biāo)簽塊;步驟B3需要合并的Swf文件利用為其所創(chuàng)建的放置對(duì)象標(biāo)簽塊,將為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊所定義的顯示內(nèi)容放置到為該Swf文件所分配的獨(dú)立的顯示層中。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在步驟B0中,所述更新各個(gè)動(dòng)畫文件的顯示對(duì)象標(biāo)識(shí)為遍歷需要合并的Swf文件中的每個(gè)標(biāo)簽塊的各個(gè)對(duì)象標(biāo)識(shí),為標(biāo)簽塊中出現(xiàn)與已經(jīng)分配的對(duì)象標(biāo)識(shí)相沖突的對(duì)象標(biāo)識(shí)重新分配對(duì)象標(biāo)識(shí),并將在該Swf文件的其余標(biāo)簽塊中出現(xiàn)的該對(duì)象標(biāo)識(shí)也更新為重新分配后的對(duì)象標(biāo)識(shí)。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,該方法進(jìn)一步包括分別統(tǒng)計(jì)各個(gè)需要合并的Swf文件中的顯示幀標(biāo)簽塊的個(gè)數(shù),然后分別用統(tǒng)計(jì)得到的個(gè)數(shù)更新對(duì)應(yīng)的為Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊中的幀數(shù)值。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B3中,所述將為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊所定義的顯示內(nèi)容放置到為該Swf文件所分配的獨(dú)立的顯示層中為放置對(duì)象標(biāo)簽塊將其所指明的二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))添加到顯示列表中;其中,對(duì)象標(biāo)識(shí)為所述為該Swf文件所創(chuàng)建的動(dòng)畫定義標(biāo)簽塊的對(duì)象標(biāo)識(shí),層序號(hào)為所述為該Swf文件所分配的獨(dú)立的顯示層的序號(hào)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,步驟C包括顯示幀標(biāo)簽塊,根據(jù)顯示列表中的各個(gè)二元數(shù)組(對(duì)象標(biāo)識(shí),層序號(hào))的內(nèi)容,在一幀中依次播放各層的顯示內(nèi)容。
全文摘要
本發(fā)明公開(kāi)了一種多個(gè)動(dòng)畫文件的合并顯示方法,該方法包括步驟A為各個(gè)需要合并的動(dòng)畫文件分配獨(dú)立的顯示層;步驟B將各個(gè)動(dòng)畫文件的顯示內(nèi)容放置到各自所分配得到的層中;步驟C將所有層中的顯示內(nèi)容在一幀中按照一定的層次關(guān)系全部顯示出來(lái)。本發(fā)明能夠?qū)⑿枰喜@示的多個(gè)動(dòng)畫文件實(shí)際合并到一個(gè)動(dòng)畫文件中,無(wú)需在合并顯示過(guò)程中使用各個(gè)動(dòng)畫文件的存放路徑,從而減少了動(dòng)畫文件合并顯示過(guò)程中的工作量,降低了動(dòng)畫文件合并顯示的實(shí)現(xiàn)難度。
文檔編號(hào)G06T13/00GK1831870SQ20051005157
公開(kāi)日2006年9月13日 申請(qǐng)日期2005年3月7日 優(yōu)先權(quán)日2005年3月7日
發(fā)明者王麒 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
兴仁县| 万全县| 内乡县| 同仁县| 葫芦岛市| 敖汉旗| 巫山县| 临泽县| 庆阳市| 吴堡县| 沙田区| 湟源县| 斗六市| 岐山县| 邵东县| 绩溪县| 凤城市| 饶阳县| 南康市| 云林县| 衡东县| 合江县| 阿克| 合江县| 金塔县| 西贡区| 三江| 千阳县| 怀仁县| 建德市| 禹州市| 南宁市| 天柱县| 南康市| 文安县| 分宜县| 扶余县| 凭祥市| 五家渠市| 安吉县| 临泉县|