本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體是涉及一種顯示對象的層級管理方法及系統(tǒng)。
背景技術(shù):
adobeflash廣泛應(yīng)用于瀏覽器或其他應(yīng)用程序中,可通過網(wǎng)頁或者應(yīng)用程序界面為用戶提供包括網(wǎng)站導(dǎo)航信息的各種資源和信息,如游戲、網(wǎng)絡(luò)視頻、網(wǎng)站廣告和交互設(shè)計(jì)等。在舞臺(stage)上顯示的所有元素都屬于顯示對象(displayobject)類型,如矢量形狀、影片剪輯和文本字段等,flash項(xiàng)目包括由顯示對象構(gòu)成的層級,顯示對象容器是特殊類型的顯示對象,除了自己的可視表示形式之外,還可以包含也是顯示對象的子對象。當(dāng)兩個(gè)顯示對象疊加在一起的時(shí)候,能夠顯示復(fù)雜的圖形和動畫。目前,在flash項(xiàng)目的開發(fā)過程時(shí),通常對層級進(jìn)行初始化,不但消耗內(nèi)存,而且后續(xù)對層級進(jìn)行調(diào)整時(shí)較為繁瑣和費(fèi)時(shí),導(dǎo)致開發(fā)效率較低。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的主要目的在于提供一種顯示對象的層級管理方法,本發(fā)明的另一目的在于提供一種顯示對象的層級管理系統(tǒng),層級對象作為顯示對象的容器,需要用到層級對象的時(shí)候才進(jìn)行創(chuàng)建,因此可以降低內(nèi)存消耗,高效地利用硬件資源,提高開發(fā)效率。
本發(fā)明提供一種顯示對象的層級管理方法,所述方法包括以下步驟:
接收用于標(biāo)識層級對象在舞臺上顯示順序的優(yōu)先級標(biāo)識,當(dāng)所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象存在時(shí),返回所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象,當(dāng)所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象不存在時(shí),根據(jù)所述優(yōu)先級標(biāo)識創(chuàng)建新的層級對象,其中,所述層級對象包括所述優(yōu)先級標(biāo)識和指定的顯示對象,以使所述層級對象作為顯示對象的容器,且所有層級對象均顯示在舞臺上。
在上述技術(shù)方案的基礎(chǔ)上,在接收優(yōu)先級標(biāo)識之前,所述方法還包括:將所有所述層級對象存儲在預(yù)先創(chuàng)建的列表中,創(chuàng)建層級管理類,并在所述層級管理類中建立sprite類的對象作為所述層級對象的父對象,所述父對象顯示在舞臺上。
在上述技術(shù)方案的基礎(chǔ)上,接收優(yōu)先級標(biāo)識,返回所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象包括:
接收優(yōu)先級標(biāo)識;
根據(jù)所述優(yōu)先級標(biāo)識,從所述列表中查找所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象;
將找到的層級對象添加到所述父對象上。
在上述技術(shù)方案的基礎(chǔ)上,根據(jù)所述優(yōu)先級標(biāo)識創(chuàng)建新的層級對象包括:
根據(jù)所述優(yōu)先級標(biāo)識,創(chuàng)建sprite類的對象作為新的層級對象;
將新的層級對象加入所述列表中,并對所述列表中所有的層級對象進(jìn)行重新排序;
將新的層級對象添加到所述父對象上。
在上述技術(shù)方案的基礎(chǔ)上,根據(jù)所述優(yōu)先級標(biāo)識,創(chuàng)建sprite類的對象作為新的層級對象包括:根據(jù)預(yù)先創(chuàng)建的層級實(shí)現(xiàn)類,建立所述層級實(shí)現(xiàn)類的對象作為新的層級對象,所述層級實(shí)現(xiàn)類用于根據(jù)預(yù)定的接口創(chuàng)建sprite類的對象作為層級對象,所述接口包括在所述層級對象中設(shè)置優(yōu)先級標(biāo)識,以及獲取所設(shè)置的優(yōu)先級標(biāo)識。
在上述技術(shù)方案的基礎(chǔ)上,將指定的顯示對象加入新創(chuàng)建的層級對象中。
在上述技術(shù)方案的基礎(chǔ)上,所述接口還包括對所述層級對象中的所有顯示對象進(jìn)行排序。
在上述技術(shù)方案的基礎(chǔ)上,所述方法還包括:根據(jù)所述優(yōu)先級標(biāo)識對所述父對象中的所有層級對象進(jìn)行排序,將所有層級對象按照排序結(jié)果顯示在舞臺上。
本發(fā)明還提供一種顯示對象的層級管理系統(tǒng),所述系統(tǒng)用于接收用于標(biāo)識層級對象在舞臺上顯示順序的優(yōu)先級標(biāo)識,當(dāng)所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象存在時(shí),返回所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象,當(dāng)所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象不存在時(shí),根據(jù)所述優(yōu)先級標(biāo)識創(chuàng)建新的層級對象,其中,所述層級對象包括所述優(yōu)先級標(biāo)識和指定的顯示對象,以使所述層級對象作為顯示對象的容器,且所有層級對象均顯示在舞臺上。
在上述技術(shù)方案的基礎(chǔ)上,所述系統(tǒng)包括:
存儲模塊,其用于將所有所述層級對象存儲在預(yù)先創(chuàng)建的列表中;
構(gòu)造模塊,其用于創(chuàng)建層級管理類,并在所述層級管理類中建立sprite類的對象作為所述層級對象的父對象,所述父對象顯示在舞臺上;
查找模塊,其用于接收優(yōu)先級標(biāo)識,根據(jù)所述優(yōu)先級標(biāo)識,從所述列表中查找所述優(yōu)先級標(biāo)識所對應(yīng)的層級對象,將找到的層級對象添加到所述父對象上;
創(chuàng)建模塊,其用于當(dāng)與所述優(yōu)先級標(biāo)識相對應(yīng)的層級對象不存在時(shí),根據(jù)所述優(yōu)先級標(biāo)識,創(chuàng)建新的層級對象,將新的層級對象加入所述列表中,并對所述列表中所有的層級對象進(jìn)行重新排序,將新的層級對象添加到所述父對象上。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:
(1)層級對象作為顯示對象的容器,需要用到層級對象的時(shí)候才進(jìn)行創(chuàng)建,因此可以降低內(nèi)存消耗,高效地利用硬件資源,提高開發(fā)效率。
(2)創(chuàng)建的層級對象均具有用于標(biāo)識在舞臺上的顯示順序的優(yōu)先級標(biāo)識,可以通過改變優(yōu)先級標(biāo)識對層級對象進(jìn)行后續(xù)調(diào)整,降低開發(fā)復(fù)雜性,進(jìn)一步提高開發(fā)效率。
(3)預(yù)先創(chuàng)建的層級實(shí)現(xiàn)類根據(jù)預(yù)定的接口創(chuàng)建sprite類的對象作為層級對象,能夠減小編程耦合度,方便項(xiàng)目在后期的擴(kuò)展和維護(hù)。
附圖說明
圖1是本發(fā)明實(shí)施例顯示對象的層級管理方法流程圖;
圖2是本發(fā)明實(shí)施例顯示對象的層級管理系統(tǒng)示意圖。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。
本發(fā)明的思想在于:在使用actionscript構(gòu)建的應(yīng)用程序中,displayobjectcontainer為顯示對象容器,是一類特殊的顯示對象。作為顯示對象,displayobjectcontainer本身也需要通過addchild()方法添加到顯示列表后才能顯示,其內(nèi)部可以包含其它的顯示對象。displayobjectcontainer包含stage、loader、sprite和movieclip類。層級對象是顯示對象,層級對象也作為顯示對象的容器,顯示對象作為子對象添加到層級對象中,從而實(shí)現(xiàn)對顯示對象的層級管理。層級對象均具有用于標(biāo)識在舞臺(stage)上的顯示順序的優(yōu)先級標(biāo)識,層級管理類根據(jù)優(yōu)先級標(biāo)識實(shí)現(xiàn)對層級對象的管理,具體包括:需要用到層級對象的時(shí)候,根據(jù)優(yōu)先級標(biāo)識查找對應(yīng)的層級對象,如果對應(yīng)的層級對象不存在,通過層級實(shí)現(xiàn)類進(jìn)行創(chuàng)建,從而提高開發(fā)效率。
參見圖1所示,本發(fā)明實(shí)施例提供一種顯示對象的層級管理方法,包括以下步驟:
s1.將所有層級對象存儲在預(yù)先創(chuàng)建的列表中,創(chuàng)建層級管理類,并在層級管理類中建立sprite類的對象作為層級對象的父對象,父對象顯示在舞臺上。
其中,層級對象包括優(yōu)先級標(biāo)識和指定的顯示對象,以使層級對象作為顯示對象的容器,所有層級對象均顯示在舞臺上,優(yōu)先級標(biāo)識用于標(biāo)識層級對象在舞臺上的顯示順序。創(chuàng)建的層級對象均具有用于標(biāo)識在舞臺上的顯示順序的優(yōu)先級標(biāo)識,可以通過改變優(yōu)先級標(biāo)識對層級對象進(jìn)行后續(xù)調(diào)整,降低開發(fā)復(fù)雜性,進(jìn)一步提高開發(fā)效率。
具體來說,創(chuàng)建layermanager層級管理類,用于對層級對象的操作和管理,所有的層級對象的信息也保存在層級管理類中,在層級管理類中建立sprite類的對象作為層級對象的父對象。在層級管理類的構(gòu)造方法中,因?yàn)閷蛹墝ο笫翘砑拥轿枧_上的,用一個(gè)全局變量來保存由外部傳進(jìn)來的層級對象,并作為層級對象的父對象,實(shí)現(xiàn)代碼可如下:
s2.接收優(yōu)先級標(biāo)識,判斷優(yōu)先級標(biāo)識所對應(yīng)的層級對象是否存在,若是,進(jìn)入s3;若否,進(jìn)入s4。
s3.返回優(yōu)先級標(biāo)識所對應(yīng)的層級對象。
步驟s3具體包括:
s3.1接收優(yōu)先級標(biāo)識。
s3.2根據(jù)優(yōu)先級標(biāo)識,從列表中查找優(yōu)先級標(biāo)識所對應(yīng)的層級對象。
s3.3將找到的層級對象添加到父對象上。
具體來說,創(chuàng)建getlayer(priority:uint),這個(gè)方法是根據(jù)傳入的優(yōu)先級標(biāo)識,在列表layermap中找對應(yīng)的層級對象,如果有就返回對應(yīng)的層級對象layer,如果沒有就返回null,實(shí)現(xiàn)代碼可如下:
其中,layermap為預(yù)先創(chuàng)建的列表,用于存儲所有層級對象。
s4.根據(jù)優(yōu)先級標(biāo)識創(chuàng)建新的層級對象。
步驟s4具體包括:
s4.1根據(jù)優(yōu)先級標(biāo)識,創(chuàng)建sprite類的對象作為新的層級對象。具體來說,根據(jù)預(yù)先創(chuàng)建的層級實(shí)現(xiàn)類,建立層級實(shí)現(xiàn)類的對象作為新的層級對象,層級實(shí)現(xiàn)類用于根據(jù)預(yù)定的接口創(chuàng)建sprite類的對象作為層級對象,接口包括在層級對象中設(shè)置優(yōu)先級標(biāo)識,以及獲取所設(shè)置的優(yōu)先級標(biāo)識。將指定的顯示對象加入新創(chuàng)建的層級對象中。
具體來說,創(chuàng)建ilayer接口,用于層級對象的接口類,這個(gè)類中定義如下幾個(gè)方法:
setpriority(value:uint):設(shè)置一個(gè)優(yōu)先級標(biāo)識,這個(gè)優(yōu)先級標(biāo)識也作為層級對象的唯一標(biāo)示。
getpriority():uint:獲取層級對象的優(yōu)先級標(biāo)識,即獲取層級對象的唯一標(biāo)示。
onsort():void:對該層級對象中的顯示對象進(jìn)行排序。
接口的實(shí)現(xiàn)代碼可如下:
具體來說,創(chuàng)建layer類,即實(shí)現(xiàn)了ilayer接口的層級實(shí)現(xiàn)類,并且該層級實(shí)現(xiàn)類繼承了sprite類作為一個(gè)顯示對象的容器類,能夠添加到舞臺上。因?yàn)閷蛹墝ο笾皇亲鳛橐粋€(gè)容器來使用,它并不需要對事件的監(jiān)聽,為了避免不必要的開銷,在layer類的構(gòu)造方法中禁用鼠標(biāo)事件,接收并保存該層級對象的優(yōu)先級標(biāo)識或唯一標(biāo)示參數(shù)。因?yàn)槊總€(gè)層級的排序方式可能都是不一樣的,所以在這個(gè)類中不實(shí)現(xiàn)排序的方法onsort,具體的實(shí)現(xiàn)方式由繼承這個(gè)類的子類去實(shí)現(xiàn),層級實(shí)現(xiàn)類的實(shí)現(xiàn)代碼可如下:
預(yù)先創(chuàng)建的層級實(shí)現(xiàn)類根據(jù)預(yù)定的接口創(chuàng)建sprite類的對象作為層級對象,能夠減小編程耦合度,方便項(xiàng)目在后期的擴(kuò)展和維護(hù)。layer類作為一個(gè)通用的基類,如果層級對象沒有特殊的要求,直接通過這個(gè)基類創(chuàng)建層級對象就夠用了,能夠避免代碼的冗余。
s4.2將新的層級對象加入列表中,并對列表中所有的層級對象進(jìn)行重新排序。
s4.3將新的層級對象添加到父對象上。
具體來說,創(chuàng)建addlayer(layer:layer)方法,外部傳進(jìn)來一個(gè)layer層級對象,然后通過層級管理類來進(jìn)行管理,在這個(gè)方法中,先檢查這個(gè)layer層級對象的優(yōu)先級標(biāo)識priority是否已經(jīng)存在,如果不存在,就保存起來,實(shí)現(xiàn)代碼可如下:
總的來說,創(chuàng)建createlayer(priority:uint):layer方法,傳入一個(gè)層級對象的優(yōu)先級標(biāo)識,然后返回一個(gè)層級對象layer。首先調(diào)用步驟s3中的getlayer方法是否能獲取一個(gè)layer層級對象,如果能獲取就表示列表layermap中找到對應(yīng)的層級對象,直接返回找到的層級對象。如果沒有找到對應(yīng)的層級對象,那么就新建一個(gè)layer對象,然后調(diào)用步驟s4中的addlayer方法通過層級管理類對創(chuàng)建的層級對象進(jìn)行管理,然后將創(chuàng)建好的層級對象返回給外部使用。
與上述s2至s4內(nèi)容對應(yīng)的實(shí)現(xiàn)代碼可如下:
使用該方法能快速地獲得一個(gè)層級對象,首先在列表中找現(xiàn)有的層級對象,如果層級對象存在就直接返回,如果層級對象不存在就創(chuàng)建一個(gè)層級對象,然后將創(chuàng)建的層級對象與層級管理類關(guān)聯(lián)上。
層級對象作為顯示對象的容器,需要用到層級對象的時(shí)候才進(jìn)行創(chuàng)建,因此可以降低內(nèi)存消耗,高效地利用硬件資源,提高開發(fā)效率。
步驟s4還可以包括:
s4.4根據(jù)優(yōu)先級標(biāo)識對父對象中的所有層級對象進(jìn)行排序,將所有層級對象按照排序結(jié)果顯示在舞臺上。
具體來說,創(chuàng)建onsort方法,用于對層級管理類中的層級對象進(jìn)行排序操作,實(shí)現(xiàn)方式是根據(jù)layer層級對象的優(yōu)先級標(biāo)識priority屬性來進(jìn)行排序,優(yōu)先級標(biāo)識priority這個(gè)屬性的值越大,那么表示層級越高,顯示就越前,通過層級管理類添加的層級對象都會進(jìn)行一個(gè)排序的操作,以保證層級對象的正確顯示,實(shí)現(xiàn)代碼可如下:
參見圖2所示,本發(fā)明實(shí)施例還提供一種顯示對象的層級管理系統(tǒng),本系統(tǒng)用于接收用于標(biāo)識層級對象在舞臺上顯示順序的優(yōu)先級標(biāo)識,當(dāng)優(yōu)先級標(biāo)識所對應(yīng)的層級對象存在時(shí),返回優(yōu)先級標(biāo)識所對應(yīng)的層級對象,當(dāng)優(yōu)先級標(biāo)識所對應(yīng)的層級對象不存在時(shí),根據(jù)優(yōu)先級標(biāo)識創(chuàng)建新的層級對象,其中,層級對象包括優(yōu)先級標(biāo)識和指定的顯示對象,以使層級對象作為顯示對象的容器,且所有層級對象均顯示在舞臺上。
本系統(tǒng)包括存儲模塊、構(gòu)造模塊、查找模塊和創(chuàng)建模塊。
存儲模塊用于將所有層級對象存儲在預(yù)先創(chuàng)建的列表中。
構(gòu)造模塊用于創(chuàng)建層級管理類,并在層級管理類中建立sprite類的對象作為層級對象的父對象,父對象顯示在舞臺上。
查找模塊用于接收優(yōu)先級標(biāo)識,根據(jù)優(yōu)先級標(biāo)識,從列表中查找與優(yōu)先級標(biāo)識相對應(yīng)的層級對象,將找到的層級對象添加到父對象上。
創(chuàng)建模塊用于當(dāng)優(yōu)先級標(biāo)識所對應(yīng)的層級對象不存在時(shí),根據(jù)優(yōu)先級標(biāo)識,創(chuàng)建新的層級對象,將新的層級對象加入列表中,并對列表中所有的層級對象進(jìn)行重新排序,將新的層級對象添加到父對象上。
層級管理類根據(jù)優(yōu)先級標(biāo)識實(shí)現(xiàn)對層級對象的管理,需要用到層級對象的時(shí)候,根據(jù)優(yōu)先級標(biāo)識查找對應(yīng)的層級對象,如果對應(yīng)的層級對象不存在,通過層級實(shí)現(xiàn)類進(jìn)行創(chuàng)建,從而提高開發(fā)效率。
本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。