本公開涉及人機交互技術(shù)領(lǐng)域,更具體地,涉及一種觸摸事件響應處理方法及系統(tǒng)。
背景技術(shù):
隨著移動通信技術(shù)的快速發(fā)展,在觸控終端上出現(xiàn)了越來越多的觸控應用。在觸控應用的運行過程中,觸控終端按照一定的布局向用戶呈現(xiàn)各個視圖以及操作界面。
目前,在一些觸控應用中,需要不同的視圖(View)來對觸摸事件進行響應,以實現(xiàn)不同的功能。例如,在一些游戲應用中,一方面,需要對游戲引擎視圖上的UI(User Interface,用戶界面)控件進行觸摸控制,以實現(xiàn)虛擬角色的攻擊、行走、對話等操作;另一方面,需要對地圖視圖(MapView)進行觸摸控制,以實現(xiàn)地圖的滑動、縮放、點擊等操作。
然而,在地圖視圖的層級高于游戲引擎視圖的層級的情況下,即在游戲引擎視圖上渲染地圖視圖的情況下,地圖視圖會覆蓋游戲引擎視圖,導致游戲引擎視圖上的UI控件無法顯示。
另一方面,在游戲引擎視圖的層級高于地圖視圖的層級的情況下,雖然可以在地圖視圖上方顯示游戲引擎視圖的UI控件,但是由于游戲引擎視圖是全屏顯示,所以觸摸事件被游戲引擎視圖攔截而導致地圖不能進行正常的滑動、縮放、點擊等操作。
此外,希望的是,先由游戲引擎視圖接收觸摸事件,在游戲引擎視圖不響應觸摸事件的情況下,才將觸摸事件傳遞至地圖視圖。然而,無論在iOS平臺還是在Android平臺下,觸摸事件都只能從子視圖傳遞給父視圖,無法在同樣層級的兩個視圖之間傳遞,并且游戲引擎視圖不能作為地圖視圖的子視圖,所以這種方案也不可行。
需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實現(xiàn)要素:
本公開的目的在于提供一種觸摸事件響應處理方法及系統(tǒng),進而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導致的一個或者多個問題。
根據(jù)本公開實施例的第一方面,提供一種觸摸事件響應處理方法,所述方法包括:配置第一視圖和第二視圖,其中所述第一視圖的層級高于所述第二視圖的層級;當接收到觸摸事件時,判斷所述觸摸事件發(fā)生的位置;當所述觸摸事件發(fā)生在所述第一視圖的區(qū)域時,由所述第一視圖對所述觸摸事件進行響應;當所述觸摸事件發(fā)生在所述第二視圖的不與所述第一視圖重疊的區(qū)域時,由所述第二視圖對所述觸摸事件進行響應。
本公開的一種示例性實施例中,所述第一視圖為用戶交互視圖,其中所述用戶交互視圖包括一個或多個子視圖,所述子視圖為按鈕視圖、文字視圖、圖片視圖中的一種或者多種。
本公開的一種示例性實施例中,所述用戶交互視圖的各個子視圖采用節(jié)點樹的形式進行管理,所述方法還包括:將所述各個子視圖添加到相應平臺的渲染節(jié)點上。
本公開的一種示例性實施例中,所述用戶交互視圖包括一個或者多個用戶交互接口,所述方法還包括:采用相應平臺的原生語言編寫所述用戶交互接口。
本公開的一種示例性實施例中,所述方法還包括:給所述用戶交互視圖的各個子視圖分別設(shè)置唯一的標識;保存所述唯一的標識與各個子視圖之間的映射關(guān)系。
本公開的一種示例性實施例中,所述方法還包括:配置第三視圖,其中所述第三視圖的層級低于所述第二視圖的層級。
根據(jù)本公開實施例的第二方面,提供一種觸摸事件響應處理系統(tǒng),所述系統(tǒng)包括:配置模塊,用于配置第一視圖和第二視圖,其中所述第一視圖的層級高于所述第二視圖的層級;判斷模塊,用于當接收到觸摸事件時,判斷所述觸摸事件發(fā)生的位置;第一響應模塊,用于當所述觸摸事件發(fā)生在所述第一視圖的區(qū)域時,由所述第一視圖對所述觸摸事件進行響應;第二響應模塊,用于當所述觸摸事件發(fā)生在所述第二視圖的不與所述第一視圖重疊的區(qū)域時,由所述第二視圖對所述觸摸事件進行響應。
本公開的一種示例性實施例中,所述第一視圖為用戶交互視圖,其中所述用戶交互視圖包括一個或多個子視圖,所述子視圖為按鈕視圖、文字視圖、圖片視圖中的一種或者多種。
本公開的一種示例性實施例中,所述用戶交互視圖的各個子視圖采用節(jié)點樹的形式管理,所述系統(tǒng)還包括:添加模塊,用于將各個子視圖添加到相應平臺的渲染節(jié)點上。
本公開的一種示例性實施例中,所述用戶交互視圖包括采用相應平臺的原生語言編寫的一個或者多個用戶交互接口。
本公開的一種實施例中的觸摸事件響應處理方法及系統(tǒng),可以通過配置層級比第二視圖的層級高的第一視圖,并且通過判斷觸摸事件的位置來確定響應該觸摸事件的視圖。與現(xiàn)有技術(shù)相比,不會形成一個視圖阻攔另一視圖操作的情況,使得觸摸事件能夠分別對不同層級的視圖進行操作。
應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中:
圖1示意性示出了本公開的示例性實施例中的一種觸摸事件響應處理方法的流程圖;
圖2示意性示出了本公開的示例性實施例中的各個視圖的一種節(jié)點樹管理方式的示意圖;
圖3示意性示出了本公開的示例性實施例中的各個視圖的另一種節(jié)點樹管理方式的示意圖;
圖4示意性示出了本公開的示例性實施例中的另一種觸摸事件響應處理方法的流程圖;
圖5示意性示出了本公開示例性實施例中一種觸摸事件響應處理系統(tǒng)的方框圖。
具體實施方式
現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。在下面的描述中,提供許多具體細節(jié)從而給出對本公開的實施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而省略所述特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知技術(shù)方案以避免喧賓奪主而使得本公開的各方面變得模糊。
此外,附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復描述。附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應??梢圆捎密浖问絹韺崿F(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。
本示例性實施方式中首先提供了一種觸摸事件響應處理方法,該觸摸事件響應處理方法主要應用于一觸控終端。該觸控終端例如可以為手機、平板電腦、筆記本電腦、游戲機、PDA(Personal Digital Assistant,掌上電腦)等各種具備觸控屏幕的電子設(shè)備。但需要說明的是,在部分非觸控終端中也可能通過模擬器等方式將鍵盤以及鼠標操作模擬為觸控操作,這種方式同樣可以視為本公開中所述的觸控終端。參考圖1,所述觸摸事件響應處理方法可以包括以下步驟。
S11:配置第一視圖和第二視圖,其中所述第一視圖的層級高于所述第二視圖的層級。
在示例性實施例中,所述第一視圖可以為用戶交互視圖(UI View)。
在示例性實施例中,所述第二視圖可以為地圖視圖,例如在游戲引擎下集成的第三方的LBS(Location Based Service,基于位置服務)地圖。需要說明的是,本發(fā)明并不以此為限,所述第二視圖可以是觸控終端中任意一個相關(guān)的應用。
需要說明的是,本發(fā)明實施例中的視圖(View)可以是代表屏幕上的一個矩形區(qū)域。其中各種UI控件都屬于View。例如,iOS平臺上所有能看到的內(nèi)容都是View或其子類。
下面的實施例中以所述第一視圖為用戶交互視圖,第二視圖為地圖視圖為例進行說明。
其中所述用戶交互視圖UI View維護一個UIView的節(jié)點樹,UIView是相應平臺中所有UI控件的父類。
在示例性實施例中,可以通過應用平臺上的一接口將用戶交互視圖的層級設(shè)置成高于地圖視圖的層級。例如,在iOS平臺下,所述接口可以為UIView中的sendSubViewToBack。但本發(fā)明不以此為限,可以根據(jù)應用平臺的不同,選擇相應的接口完成該層級高低的設(shè)置。
其中所述用戶交互視圖包括一個或多個子視圖,所述子視圖為按鈕視圖、文字視圖、圖片視圖中的一種或者多種,但本發(fā)明不以此為限。
針對這些按鈕視圖、文字視圖、圖片視圖,可以通過節(jié)點樹的形式進行管理。圖2示出了示例性實施例中的一種節(jié)點樹的管理形式。在平臺的根節(jié)點的下一層可以包括用戶交互視圖和地圖視圖,兩者之間是兄弟節(jié)點。例如,UIView根節(jié)點下由可以包括圖片視圖1、按鈕視圖、文字視圖以及圖片視圖2等子視圖。其中最上面的根節(jié)點可以是相應平臺的根節(jié)點。
各個子視圖的節(jié)點樹管理形式并不以此為限。如圖3所示,在這些子視圖(如:按鈕視圖、文字視圖、圖片視圖)與UIView根節(jié)點之間還可以存在多個子視圖,這些子視圖可以作為所述按鈕視圖、文字視圖、圖片視圖的父視圖,并可以用于對所述子視圖進行進一步管理,本示例性實施方式中對此不做特殊限定。
例如,UIView根節(jié)點的下一層包括三個子視圖:子視圖1、子視圖2、和子視圖3。其中,子視圖1的下一層又可以包括圖片視圖1和按鈕視圖,子視圖2的下一層又可以包括圖片視圖2,子視圖3的下一層又可以包括圖片視圖3和文字視圖。這里圖片視圖1和按鈕視圖是子視圖1的子視圖(下級視圖);反之,子視圖1是圖片視圖1和按鈕視圖的父視圖(上級視圖)。同理,圖片視圖2是子視圖2的子視圖,子視圖2是圖片視圖2的父視圖。
需要說明的是,雖然上述圖3例舉了UIView的三層節(jié)點樹管理形式,但實際上UIView可以是二層或者二層以上的任意層節(jié)點樹管理形式,各個節(jié)點層中的各個子視圖中包括的圖片視圖、按鈕視圖、文字視圖的數(shù)量也不受限制。
在示例性實施例中,所述方法還包括:配置第三視圖,其中所述第三視圖的層級低于所述第二視圖的層級。
其中所述第三視圖也可以是安裝于觸控終端中的任意應用,例如游戲引擎視圖。
繼續(xù)參考圖3,游戲引擎視圖、用戶交互視圖以及地圖視圖之間是兄弟節(jié)點的關(guān)系。其中游戲引擎視圖的層級低于地圖視圖的層級,地圖視圖的層級低于用戶交互視圖的層級。這里游戲引擎視圖不用于UI交互,UI控件的顯示由UIView來完成。
現(xiàn)有技術(shù)中,游戲引擎視圖用于承載游戲中所有場景和UI。由于游戲引擎視圖為全屏顯示,所以在地圖視圖的層級高于游戲引擎視圖的情況下,游戲引擎視圖的UI控件被地圖視圖覆蓋而無法顯示。本發(fā)明為了解決這一問題,開發(fā)了一個用戶交互視圖,該用戶交互視圖可以形成UIView根節(jié)點。該UIView包括游戲引擎視圖的各個UI控件,這些UI控件可以作為該UIView根節(jié)點的子視圖。在這種情況下,游戲引擎視圖不再進行UI交互。
在示例性實施例中,所述方法還包括:針對不同的平臺,將這些子視圖添加到對應的渲染節(jié)點上。例如,針對iOS平臺,可以將這些子視圖添加到UIWindow上;針對Android平臺,可以將這些子視圖添加到Dialog上。
根據(jù)本公開的示例性實施方式,所述觸摸事件響應處理方法還可以包括給UIView根節(jié)點視圖的各個子視圖分別設(shè)置唯一的標識,并且保存所述唯一的標識與各個子視圖之間的映射關(guān)系。
也就是說,每一個子視圖都具有一個唯一的id,用于唯一標識該子視圖。例如,可以通過字典的形式對其映射關(guān)系進行保存,在所述UIView中,存在一個字典并對該字典進行維護,該字典記錄了每一個子視圖與其對應的id的映射關(guān)系。
當添加一子視圖時,可以把該子視圖與其對應的id的映射關(guān)系保存在字典中。
另外,當刪除一子視圖時,相應地,在字典中也刪除該子視圖與其對應的id的映射關(guān)系。
另外,當需要將一子視圖添加到某個父節(jié)點上時,首先可以在字典中查找出該父節(jié)點,然后再完成子視圖的添加操作。
此外,當需要對一子視圖進行修改時,可以通過字典將該子視圖找出,并執(zhí)行修改操作。
在本公開的示例性實施方式中,UIView還可以包括一個或者多個UI接口。所述UI接口可以包括顯示圖片、按鈕、文字以及縮放、旋轉(zhuǎn)等操作的接口。這些接口可以具有不同的功能。
其中int UI_addView(int parentUiId,float posX,float posY,float width,float height);用于實現(xiàn)往節(jié)點樹中加入一個視圖,此視圖會接收并攔截觸摸事件,一般作為一組UI組件的父節(jié)點使用。傳入父節(jié)點id(如果為0則添加到根節(jié)點)、坐標位置和矩形大小,將把此視圖添加到指定的父節(jié)點上,并返回此視圖的id。
int UI_addImage(int parentUiId,char*imgData,int data_len,float posX,float posY);用于往節(jié)點樹中加入一張圖片,傳入該圖片的數(shù)據(jù)以及位置,其中該圖片為一子視圖,并且將此圖片添加到指定的父節(jié)點上,并返回這個子視圖的id。
int UI_addScale9Image(int parentUiId,char*imgData,int data_len,float posX,float posY,float width,float height,float capInset1,float capInset2,float capInset3,float capInset4);類似UI_addImage,但允許圖片的九宮格顯示。
void UI_changeImage(int uiId,char*imgData,int data_len);用于修改一張圖片的數(shù)據(jù)。
int UI_addButton(int parentUiId,char*imgData_normal,int data_len_normal,char*imgData_over,int data_len_over,float posX,float posY,int callbackId,char*imgData_disabled,int data_len_disabled);用于往節(jié)點樹中加入一個按鈕,傳入父節(jié)點id、位置、各個狀態(tài)的圖片數(shù)據(jù),以及回調(diào)的id,在按鈕被點擊時,將調(diào)用預先設(shè)好的回調(diào)函數(shù),并把回調(diào)id傳回給腳本,以便做按鈕點擊回調(diào)的處理。
int UI_addLabel(int parentUiId,float posX,float posY,const char*text,const char*font,int size,float r,float g,float b,int strokeWidth,float strokeR,float strokeG,float strokeB,float fixedWidth);用于往節(jié)點樹中加入一串文字,傳入父節(jié)點id、文字的位置、內(nèi)容、字體、大小、顏色、描邊等信息,返回該文字的唯一id。
此外,這些接口還包括刪除所有子視圖的接口、設(shè)置子視圖進行旋轉(zhuǎn)的接口、設(shè)置子視圖的透明度的接口、移動子視圖到指定位置的接口等。
例如,void UI_removeUI(int uiId);用于把一個UI組件從節(jié)點樹中刪除。
void UI_removeAllUI();用于刪除所有的UI組件。
void UI_getFrame(int uiId,float&x,float&y,float&w,float&h);用于獲得一個UI組件的矩形區(qū)域,包括位置和大小。
void UI_moveUI(int uiId,float posX,float posY,float time);用于移動一個UI組件到某個特定的位置。
void UI_setUIScale(int uiId,float scaleX,float scaleY,float time);用于設(shè)置一個UI組件的縮放。
void UI_setUIRotation(int uiId,float angle,float time);用于設(shè)置一個UI組件的旋轉(zhuǎn)。
void UI_setUIOpacity(int uiId,float opacity,float time);用于設(shè)置一個UI組件的透明度。
void UI_setLabelText(int labelUiId,const char*text);用于修改一個文字類型UI組件的文字內(nèi)容,僅支持文字組件。
void UI_setButtonEnabled(int buttonId,bool enabled);用于設(shè)置一個按鈕類型UI組件是否可點擊,僅支持按鈕組件。
void UI_setUIVisible(int uiId,bool visible);用于設(shè)置一個UI組件的顯示/隱藏。
然而,本發(fā)明不限于此,還可以具有各種功能的接口。
為了更好地解決觸摸事件在不同層級之間的傳遞問題,優(yōu)選地采用原生語言對所述UI接口進行編寫。例如,針對iOS平臺,采用Objective-C或swift對所述UI接口進行編寫;針對Android平臺,采用Java對所述UI接口進行編寫,但不限于此,其他應用平臺可以使用其相應的原生語言對所述UI接口進行編寫。
將編寫好的各個UI接口統(tǒng)一封裝,再導出給腳本調(diào)用。在本公開的示例性實施方式中,腳本所采用的語言是Python,但不限于此,還可以使用其他腳本語言,本示例性實施方式中對此不做特殊限定。
S12:當接收到觸摸事件時,判斷所述觸摸事件發(fā)生的位置。
其中所述觸摸事件可以是用戶的手指或觸摸筆觸發(fā)的觸摸事件,但是不限于此,也可能通過模擬器等方式將鍵盤或鼠標操作模擬為觸摸操作,本示例性實施方式中對此不做特殊限定。
S13:當所述觸摸事件發(fā)生在所述第一視圖的區(qū)域時,由所述第一視圖對所述觸摸事件進行響應。
對應于本公開的示例性實施方式,由于UI View的層級高于地圖視圖的層級,如果觸摸事件發(fā)生在UI View的某個子視圖上,該觸摸事件會傳遞給UI View,從而執(zhí)行相應的UI操作。在這種情況下,無需考慮地圖視圖。
S14:當所述觸摸事件發(fā)生在所述第二視圖的不與所述第一視圖重疊的區(qū)域時,由所述第二視圖對所述觸摸事件進行響應。
對應于本公開的示例性實施方式,在這種情況下,觸摸的區(qū)域不在UI View上,僅地圖視圖接收到觸摸事件,此時,地圖視圖可以響應于觸摸事件而執(zhí)行地圖的滑動、縮放、點擊等操作。這樣,既可以在地圖上方顯示UI,又可以使得地圖正常操作。
圖4示意性示出了本公開的示例性實施例中的另一種觸摸事件響應處理方法的流程圖。
參考圖4,所述觸摸事件響應處理方法可以包括以下步驟:
S21:配置一非全屏顯示的UI View。
S22:配置地圖視圖,設(shè)置所述UI View的層級高于所述地圖視圖的層級。
S23:判斷是否接收到觸摸事件;當接收到所述觸摸事件時,進入步驟S24;反之,繼續(xù)判斷是否接收到觸摸事件。
S24:判斷所述觸摸事件發(fā)生在UI View區(qū)域;當所述觸摸事件發(fā)生在UI View區(qū)域時,進入步驟S25;反之,跳轉(zhuǎn)到步驟S26。
S25:所述UI View對所述觸摸事件進行響應。完成相應的UI操作后,繼續(xù)跳回到步驟S23判斷是否接收到下一個觸摸事件。
S26:所述地圖視圖對所述觸摸事件進行響應。完成相應的UI操作后,繼續(xù)跳回到步驟S23判斷是否接收到下一個觸摸事件。
本發(fā)明實施方式的其他內(nèi)容參見上述實施方式,在此不再贅述。
應當注意,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。
進一步的,參考圖5中所示,本示例實施方式中還提供了一種觸摸事件響應處理系統(tǒng)1,所述觸摸事件響應處理系統(tǒng)1可以包括配置模塊11、判斷模塊12、第一響應模塊13和第二響應模塊14。
其中配置模塊11用于配置第一視圖和第二視圖,其中所述第一視圖的層級高于所述第二視圖的層級。
判斷模塊12用于當接收到觸摸事件時,判斷所述觸摸事件發(fā)生的位置。
第一響應模塊13用于當所述觸摸事件發(fā)生在所述第一視圖的區(qū)域時,由所述第一視圖對所述觸摸事件進行響應。
第二響應模塊14用于當所述觸摸事件發(fā)生在所述第二視圖的不與所述第一視圖重疊的區(qū)域時,由所述第二視圖對所述觸摸事件進行響應。
本示例性實施例中,所述第一視圖為用戶交互視圖,其中所述用戶交互視圖包括一個或多個子視圖,所述子視圖為按鈕視圖、文字視圖、圖片視圖中的一種或者多種。
本示例性實施例中,所述用戶交互視圖的各個子視圖采用節(jié)點樹的形式管理,所述系統(tǒng)還包括:添加模塊,用于將各個子視圖添加到相應平臺的渲染節(jié)點上。
本示例性實施例中,所述用戶交互視圖包括采用相應平臺的原生語言編寫的一個或者多個UI接口。
由于本發(fā)明實施方式的程序運行性能分析裝置的各個功能模塊與上述方法發(fā)明實施方式中相同,因此在此不再贅述。
應當注意,盡管在上文詳細描述中提及了程序運行性能分析裝置的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM,U盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務器、觸控終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。
本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
應當理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。