本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種響應(yīng)方法和裝置。
背景技術(shù):
在現(xiàn)有技術(shù)中,很多表現(xiàn)集合在一處的組件,實(shí)現(xiàn)往往也耦合在一處。以視頻播放為例,該視頻播放支持拖拽進(jìn)度條以實(shí)現(xiàn)快進(jìn)和后退功能。從表現(xiàn)邏輯上,界面會顯示進(jìn)度條的長度,具體視頻播放位置,以及服務(wù)器記錄當(dāng)前播放的位置。那么,對應(yīng)地進(jìn)度條拖拽的實(shí)現(xiàn)邏輯(或稱響應(yīng)函數(shù))包括了控制進(jìn)度條顯示的子函數(shù),控制視頻播放位置的子函數(shù),以及通知服務(wù)器當(dāng)前播放位置的子函數(shù)。該響應(yīng)函數(shù)例如具體如下:
其中,onmousedown函數(shù)是響應(yīng)用戶拖拽進(jìn)度條的響應(yīng)函數(shù),showbar.progress是控制進(jìn)度條顯示的子函數(shù),mp4.play(showbar.progress)是播放視頻的子函數(shù),netserver.send(showbar.progress)是通知服務(wù)器當(dāng)前視頻播放位置的子函數(shù)。
然而,正是由于現(xiàn)有技術(shù)將上述多個函數(shù)或組件依照表現(xiàn)耦合在一起,因此一旦需要維護(hù),則需要對每個子函數(shù)一并維護(hù)。所以,維護(hù)難度較大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種響應(yīng)方法和裝置,用于降低代碼維護(hù)的難度。
第一方面,本發(fā)明提供了一種響應(yīng)方法,包括:
接收用戶針對界面顯示出的一顯示組件的操作;
基于所述操作,與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件;
所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作;所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件。
可選的,在與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件之前,還包括:
創(chuàng)建與所述顯示組件對應(yīng)的所述第一自定義事件;
將用于響應(yīng)所述第一自定義事件的邏輯對應(yīng)的所述幀聽事件注冊幀聽所述自定義事件。
可選的,所述第一自定義事件繼承于動作腳本actionscript的事件event基類。
可選的,所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作,包括:
所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù)直接處理所述第一自定義事件。
可選的,所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作,包括:
所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù),拋出第二自定義事件,以使所述第二自定義事件的所述幀聽組件響應(yīng)所述操作。
第二方面,本發(fā)明提供了一種響應(yīng)裝置,包括:
接收模塊,用于接收用戶針對界面顯示出的一顯示組件的操作;
第一響應(yīng)模塊,用于基于所述操作,與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件;
第二響應(yīng)模塊,用于所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作;所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件。
可選的,所述裝置還包括:
創(chuàng)建模塊,用于在與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件之前,創(chuàng)建與所述顯示組件對應(yīng)的所述第一自定義事件;
注冊模塊,用于將用于響應(yīng)所述第一自定義事件的邏輯對應(yīng)的所述幀聽事件注冊幀聽所述自定義事件。
可選的,所述第一自定義事件繼承于動作腳本actionscript的事件event基類。
可選的,所述第二響應(yīng)模塊用于所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù)直接處理所述第一自定義事件。
可選的,所述第二響應(yīng)模塊用于所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù),拋出第二自定義事件,以使注冊幀聽所述第二自定義事件的所述幀聽組件響應(yīng)所述操作。
本申請實(shí)施例中的上述一個或多個技術(shù)方案,至少具有如下一種或多種技術(shù)效果:
在本發(fā)明實(shí)施例中的技術(shù)方案中,接收用戶針對界面顯示出的一顯示組件的操作,基于所述操作,與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件,進(jìn)而所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作,其中所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件??梢?,本發(fā)明實(shí)施例將所述響應(yīng)函數(shù)中原有的一個或多個子函數(shù)解耦為獨(dú)立的幀聽組件,并使該一個或多個幀聽組件幀聽所述響應(yīng)函數(shù)拋出的所述第一自定義事件,以使得各個獨(dú)立的所述幀聽組件基于所述第一自定義事件執(zhí)行對應(yīng)的子函數(shù)邏輯,從而響應(yīng)所述操作。由于各個子函數(shù)解耦,維護(hù)一個高耦合的函數(shù)就轉(zhuǎn)化成了對各個代碼量較小的子函數(shù)的維護(hù),相較于維護(hù)高耦合的函數(shù)而言,維護(hù)子函數(shù)更加容易。因此本發(fā)明實(shí)現(xiàn)了降低代碼維護(hù)的難度的技術(shù)效果。
附圖說明
圖1為本發(fā)明實(shí)施例中響應(yīng)方法的流程圖;
圖2為本發(fā)明實(shí)施例中響應(yīng)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種響應(yīng)方法和裝置,用于降低代碼維護(hù)的難度。
為了解決上述技術(shù)問題,本發(fā)明提供的技術(shù)方案總體思路如下:
在本發(fā)明實(shí)施例中的技術(shù)方案中,接收用戶針對界面顯示出的一顯示組件的操作,基于所述操作,與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件,進(jìn)而所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作,其中所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件。可見,本發(fā)明實(shí)施例將所述響應(yīng)函數(shù)中原有的一個或多個子函數(shù)解耦為獨(dú)立的幀聽組件,并使該一個或多個幀聽組件幀聽所述響應(yīng)函數(shù)拋出的所述第一自定義事件,以使得各個獨(dú)立的所述幀聽組件基于所述第一自定義事件執(zhí)行對應(yīng)的子函數(shù)邏輯,從而響應(yīng)所述操作。由于各個子函數(shù)解耦,維護(hù)一個高耦合的函數(shù)就轉(zhuǎn)化成了對各個代碼量較小的子函數(shù)的維護(hù),相較于維護(hù)高耦合的函數(shù)而言,維護(hù)子函數(shù)更加容易。因此本發(fā)明實(shí)現(xiàn)了降低代碼維護(hù)的難度的技術(shù)效果。
下面通過附圖以及具體實(shí)施例對本發(fā)明技術(shù)方案做詳細(xì)的說明,應(yīng)當(dāng)理解本申請實(shí)施例以及實(shí)施例中的具體特征是對本申請技術(shù)方案的詳細(xì)的說明,而不是對本申請技術(shù)方案的限定,在不沖突的情況下,本申請實(shí)施例以及實(shí)施例中的技術(shù)特征可以相互組合。
本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:單獨(dú)存在a,同時存在a和b,單獨(dú)存在b這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
本發(fā)明第一方面提供了一種響應(yīng)方法,請參考圖1,為響應(yīng)方法的流程圖,該方法包括:
s101:接收用戶針對界面顯示出的一顯示組件的操作;
s102:基于所述操作,與所述顯示組件對應(yīng)的響應(yīng)函數(shù)拋出與所述操作對應(yīng)的第一自定義事件;
s103:所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作;所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件。
具體來講,本發(fā)明實(shí)施例中的顯示組件例如為進(jìn)度條、虛擬按鈕、虛擬禮物購買標(biāo)識或彈幕發(fā)送窗口等,本發(fā)明不做具體限制。那么,s101中針對顯示組件的操作就包括但不限于拖拽進(jìn)度條、點(diǎn)擊虛擬按鈕、購買虛擬禮物或在彈幕發(fā)送窗口中發(fā)送彈幕等,本發(fā)明不做具體限制。
接下來,接收到針對顯示組件的操作后,在s102中,基于該操作,響應(yīng)該操作的響應(yīng)函數(shù)拋出表示該操作的第一自定義事件。
具體來講,響應(yīng)函數(shù)為響應(yīng)該操作的函數(shù)。例如該操作具體為拖拽進(jìn)度條的操作,則響應(yīng)函數(shù)具體為背景技術(shù)所述的onmousedown函數(shù),該操作具體為發(fā)送彈幕的操作,則響應(yīng)函數(shù)具體為彈幕發(fā)送函數(shù),該操作具體為購買禮物,則響應(yīng)函數(shù)為購買禮物函數(shù)。
通常,現(xiàn)有技術(shù)中的響應(yīng)函數(shù)在接收到用戶執(zhí)行的操作后,由于響應(yīng)函數(shù)中耦合了各個與表現(xiàn)邏輯對應(yīng)的子函數(shù),因此在響應(yīng)函數(shù)中執(zhí)行各個子函數(shù),就實(shí)現(xiàn)對該操作的響應(yīng)。然而,與現(xiàn)有技術(shù)不同的是,在本發(fā)明實(shí)施例中,響應(yīng)函數(shù)并不會耦合多個子函數(shù),響應(yīng)函數(shù)的邏輯轉(zhuǎn)換為拋出對應(yīng)自定義事件的邏輯。因此接收操作后響應(yīng)函數(shù)也不會在自身執(zhí)行各個子函數(shù)的邏輯,而是直接對外拋出第一自定義事件。
本發(fā)明實(shí)施例中的第一自定義事件為動作腳本actionscript的自定義事件。每個自定義事件被零個、一個或多個組件注冊幀聽。注冊幀聽其他事件的組件為幀聽組件。當(dāng)系統(tǒng)中有自定義事件被拋出,注冊幀聽該自定義事件的組件就知曉了該自定義事件,然后執(zhí)行幀聽組件自身邏輯。本發(fā)明實(shí)施例將由響應(yīng)函數(shù)直接拋出的自定義事件稱為“第一自定義事件”。
可選的,在s102之前,還包括:
創(chuàng)建與所述顯示組件對應(yīng)的所述第一自定義事件;
將用于響應(yīng)所述第一自定義事件的邏輯對應(yīng)的所述幀聽事件注冊幀聽所述自定義事件。
具體來講,按照actionscript中創(chuàng)建自定義事件的方式對需要響應(yīng)的操作創(chuàng)建對應(yīng)的第一自定義事件。為了方便描述,下面以類似于背景技術(shù)中表示響應(yīng)進(jìn)度條拖拽操作為例來介紹。
具體來講,通過如下代碼創(chuàng)建表示進(jìn)度條拖拽操作的第一自定義事件類:
通過上述代碼,就定義出了表示進(jìn)度條拖拽操作的第一自定義事件。
可選的,在本發(fā)明實(shí)施例中,為了自定義事件能夠具備actionscript的事件event基類的所有功能,可以令第一自定義事件繼承event基類。
接下來,將響應(yīng)第一自定義事件的邏輯對應(yīng)的幀聽組件注冊幀聽該第一自定義事件。沿用上文中的例子來說,從背景技術(shù)記載的響應(yīng)函數(shù)可以看出,響應(yīng)進(jìn)度條拖拽操作的邏輯具體包括showbar.progress的邏輯,mp4.play(showbar.progress)的邏輯和netserver.send(showbar.progress)的邏輯。因此,創(chuàng)建出上述表示進(jìn)度條拖拽操作的第一自定義事件后,將與showbar.progress對應(yīng)的showbar組件、與mp4.play(showbar.progress)對應(yīng)的mp4組件和與netserver.send(showbar.progress)對應(yīng)的netserver組件注冊幀聽第一自定義事件。具體通過如下代碼注冊幀聽:
showbar.addeventlistener(progresschangeevent.progress_change,showbarhandle);
mp4.addeventlistener(progresschangeevent.progress_change,mp4handle);
netserver.addeventlistener(progresschangeevent.progress_change,nethandle);
通過上述注冊幀聽第一自定義事件的過程,就能夠?qū)㈨憫?yīng)函數(shù)中原有的子函數(shù)解耦到響應(yīng)函數(shù)之外,進(jìn)而降低響應(yīng)函數(shù)的代碼量。
另外,對于響應(yīng)函數(shù),由于子函數(shù)從響應(yīng)函數(shù)中解耦出來,而響應(yīng)函數(shù)也需要拋出第一自定義事件,因此,響應(yīng)函數(shù)中的邏輯則修改為拋出第一自定義函數(shù)。沿用上文中的例子,onmousedown函數(shù)則修改為
functiononmousedown(evt:mouseevent){
showbar.dispatchevent(newprogresschangeevent(pos));
}
那么,在接收到用戶對顯示組件執(zhí)行的操作時,響應(yīng)函數(shù)執(zhí)行自身邏輯,就會對外拋出第一自定義事件,進(jìn)而注冊幀聽第一自定義事件的幀聽組件將幀聽到第一自定義事件。
因此,在s103中,注冊幀聽第一自定義事件的幀聽組件幀聽到第一自定義事件后,開始執(zhí)行自身邏輯,即運(yùn)行自身函數(shù)或調(diào)用函數(shù)。最終,每個幀聽組件將向上層返回執(zhí)行結(jié)果,共同響應(yīng)用戶的操作。
具體來講,編寫幀聽組件的技術(shù)人員可以直接將幀聽組件的邏輯編寫在幀聽組件中,換言之,幀聽組件的運(yùn)行不需要調(diào)用其他函數(shù)。因此,在一種實(shí)施方式,s103通過如下方式實(shí)現(xiàn):
所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù)直接處理所述所述第一自定義事件。
在該種實(shí)施方式中,幀聽組件幀聽到第一自定義事件后,執(zhí)行自身邏輯,進(jìn)而直接對第一自定義事件進(jìn)行處理,并向上層返回處理結(jié)果。
或者,對于一些功能復(fù)雜或者功能交錯的幀聽組件,技術(shù)人員也可以將幀聽組件的邏輯編寫為類似于上述響應(yīng)函數(shù)中,換言之,幀聽組件的邏輯也拋出一個自定義事件給其他幀聽組件幀聽。因此,在另一種實(shí)施方式,s103通過如下方式實(shí)現(xiàn):
所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù),拋出第二自定義事件,以使所述第二自定義事件的所述幀聽組件響應(yīng)所述操作。
在該種實(shí)施方式中,幀聽組件的邏輯也為拋出一個第二自定義事件,其中,第二自定義事件為幀聽組件拋出的自定義事件。幀聽組件拋出的第二自定義事件同樣可以被注冊幀聽該第二自定義事件的其他幀聽組件所幀聽到,進(jìn)而這些其他幀聽組件直接處理第二自定義事件,或者,再次拋出自定義事件,直到s101中接收到的操作被響應(yīng)為止。
基于與前述實(shí)施例中響應(yīng)方法同樣的發(fā)明構(gòu)思,本發(fā)明第二方面還提供一種響應(yīng)裝置,如圖2所示,包括:
接收模塊101,用于接收用戶針對界面顯示出的一顯示組件的操作;
第一響應(yīng)模塊102,用于基于所述操作,與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件;
第二響應(yīng)模塊103,用于所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作;所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件。
進(jìn)一步,所述裝置還包括:
創(chuàng)建模塊,用于在與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件之前,創(chuàng)建與所述顯示組件對應(yīng)的所述第一自定義事件;
注冊模塊,用于將用于響應(yīng)所述第一自定義事件的邏輯對應(yīng)的所述幀聽事件注冊幀聽所述自定義事件。
進(jìn)一步,所述第一自定義事件繼承于動作腳本actionscript的事件event基類。
進(jìn)一步,所述第二響應(yīng)模塊103用于所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù)直接處理所述第一自定義事件。
進(jìn)一步,所述第二響應(yīng)模塊103用于所述第一自定義事件的所述幀聽組件執(zhí)行自身函數(shù),拋出第二自定義事件,以使所述第二自定義事件的所述幀聽組件響應(yīng)所述操作。
前述圖1實(shí)施例中的響應(yīng)方法的各種變化方式和具體實(shí)例同樣適用于本實(shí)施例的響應(yīng)裝置,通過前述對響應(yīng)方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實(shí)施例中響應(yīng)裝置的實(shí)施方法,所以為了說明書的簡潔,在此不再詳述。
本申請實(shí)施例中的上述一個或多個技術(shù)方案,至少具有如下一種或多種技術(shù)效果:
在本發(fā)明實(shí)施例中的技術(shù)方案中,接收用戶針對界面顯示出的一顯示組件的操作,基于所述操作,與所述操作對應(yīng)的響應(yīng)函數(shù)拋出表示所述操作的第一自定義事件,進(jìn)而所述第一自定義事件的幀聽組件執(zhí)行所述幀聽組件的邏輯,以響應(yīng)所述操作,其中所述幀聽組件為響應(yīng)所述操作的子函數(shù)對應(yīng)的組件??梢?,本發(fā)明實(shí)施例將所述響應(yīng)函數(shù)中原有的一個或多個子函數(shù)解耦為獨(dú)立的幀聽組件,并使該一個或多個幀聽組件幀聽所述響應(yīng)函數(shù)拋出的所述第一自定義事件,以使得各個獨(dú)立的所述幀聽組件基于所述第一自定義事件執(zhí)行對應(yīng)的子函數(shù)邏輯,從而響應(yīng)所述操作。由于各個子函數(shù)解耦,維護(hù)一個高耦合的函數(shù)就轉(zhuǎn)化成了對各個代碼量較小的子函數(shù)的維護(hù),相較于維護(hù)高耦合的函數(shù)而言,維護(hù)子函數(shù)更加容易。因此本發(fā)明實(shí)現(xiàn)了降低代碼維護(hù)的難度的技術(shù)效果。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲器中,使得存儲在該計(jì)算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。