專利名稱:用于同步動(dòng)畫系統(tǒng)的通信協(xié)議的制作方法
技術(shù)領(lǐng)域:
本文中所描述的系統(tǒng)和方法一般涉及動(dòng)畫系統(tǒng),更具體地涉及用于維持多個(gè) 動(dòng)畫系統(tǒng)之間的數(shù)據(jù)和時(shí)鐘同步的通信協(xié)議。
背景技術(shù):
無(wú)論是就視頻游戲、網(wǎng)絡(luò)網(wǎng)站、多媒體演示還是其它而言,近年來(lái)用戶對(duì)圖 形質(zhì)量的期望大大地增加了。因而,這一很高程度的期望對(duì)視頻/動(dòng)畫系統(tǒng)和應(yīng)用 程序開(kāi)發(fā)者提出了不斷增加的挑戰(zhàn)。
交互式動(dòng)畫應(yīng)用程序提出了一個(gè)特殊的問(wèn)題,因?yàn)閮蓚€(gè)動(dòng)畫系統(tǒng)(例如,存 儲(chǔ)在本地或遠(yuǎn)程存儲(chǔ)器中的應(yīng)用程序以及顯示設(shè)備系統(tǒng))必須相互通信才能提供高 品質(zhì)的用戶體驗(yàn)。這里存在一個(gè)問(wèn)題,因?yàn)橐粋€(gè)動(dòng)畫系統(tǒng)(即,存儲(chǔ)在存儲(chǔ)器中的 應(yīng)用程序)與用戶交互最為相關(guān),而另一個(gè)動(dòng)畫系統(tǒng)(即,顯示設(shè)備系統(tǒng))主要與 諸如刷新速率等呈現(xiàn)方面相關(guān)。必須調(diào)解這些競(jìng)爭(zhēng)的利益才能提供期望的用戶體 驗(yàn)。
發(fā)明概述
本文描述了包括兩個(gè)不同動(dòng)畫系統(tǒng)的系統(tǒng)和方法。高級(jí)動(dòng)畫系統(tǒng)(例如,應(yīng) 用程序)主要與交互及復(fù)雜的定時(shí)結(jié)構(gòu)相關(guān),因此針對(duì)高交互而被優(yōu)化。低級(jí)動(dòng)畫 系統(tǒng)(例如,顯示設(shè)備)主要與呈現(xiàn)刷新速率相關(guān),因此針對(duì)高刷新幀速率而被優(yōu) 化。提供多個(gè)不同的動(dòng)畫系統(tǒng)允許動(dòng)畫以預(yù)定的顯示刷新速率運(yùn)行而不犧牲交互, 或是反之。
兩個(gè)動(dòng)畫系統(tǒng)異步地運(yùn)行,從而每個(gè)系統(tǒng)可更好地在其自己的定時(shí)結(jié)構(gòu)中聚 焦在其主要功能之上。為優(yōu)化用戶體驗(yàn),兩個(gè)動(dòng)畫系統(tǒng)必須被同步。在本文中所描 述的同步過(guò)程中,高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)使用專門為此目的設(shè)計(jì)的通信協(xié)議 來(lái)交換數(shù)據(jù)(例如,時(shí)鐘數(shù)據(jù)、動(dòng)畫功能數(shù)據(jù)等等)。
本文中所介紹的通信協(xié)議可提供一種用于交換所需數(shù)據(jù)的有效方法。該通信協(xié)議不是為每一幀發(fā)送大量數(shù)據(jù),而是能夠僅發(fā)送關(guān)于假定動(dòng)畫在指定的時(shí)間段上 將如何改變的少量數(shù)據(jù)。除了節(jié)省系統(tǒng)額外開(kāi)銷以外,該協(xié)議確保低級(jí)動(dòng)畫系統(tǒng)具 有用于處理動(dòng)畫的若干幀的信息,這導(dǎo)致沒(méi)有任何呈現(xiàn)幀將因?yàn)槿鄙偎⑿聰?shù)據(jù)而被 丟失。
附圖簡(jiǎn)述
當(dāng)通過(guò)結(jié)合附圖參考以下詳細(xì)描述時(shí),可以對(duì)本發(fā)明的示例性方法和安排有 更加完整的理解,附圖中
圖1是包括動(dòng)畫子系統(tǒng)的服務(wù)器-客戶機(jī)系統(tǒng)的框圖。 圖2是示例性動(dòng)畫呈現(xiàn)系統(tǒng)體系結(jié)構(gòu)的框圖。
圖3是描繪分解的動(dòng)畫/呈現(xiàn)系統(tǒng)的基本操作的方法實(shí)現(xiàn)的流程圖。
圖4a是從高級(jí)定時(shí)引擎向低級(jí)定時(shí)引擎發(fā)送、以將高級(jí)動(dòng)畫系統(tǒng)與低級(jí)動(dòng)畫
系統(tǒng)同步的通信協(xié)議消息和參數(shù)的描繪。
圖4b是從低級(jí)定時(shí)引擎向高級(jí)定時(shí)引擎發(fā)送、以將高級(jí)動(dòng)畫系統(tǒng)與低級(jí)動(dòng)畫
系統(tǒng)同步的通信協(xié)議消息和參數(shù)的描繪。
圖4c是從高級(jí)動(dòng)畫對(duì)象向低級(jí)動(dòng)畫對(duì)象發(fā)送、以將高級(jí)動(dòng)畫系統(tǒng)與低級(jí)動(dòng)畫
系統(tǒng)同步的通信協(xié)議消息和參數(shù)的描繪。
圖5是描繪具有完全連接的高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)的呈現(xiàn)系統(tǒng)中的動(dòng) 畫過(guò)程的示例性方法實(shí)現(xiàn)的流程圖。
圖6是描繪具有部分連接的高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)的呈現(xiàn)系統(tǒng)中的動(dòng) 畫過(guò)程的示例性方法實(shí)現(xiàn)的流程圖。
圖7是根據(jù)本文中所描述的系統(tǒng)和方法的示例性計(jì)算環(huán)境。
優(yōu)選實(shí)施例的詳細(xì)描述
以下討論一般涉及使用管理在生成和呈現(xiàn)中所使用的傳送工具的通信協(xié)議來(lái)
生成和呈現(xiàn)動(dòng)畫(即,隨時(shí)間推移而修改圖形對(duì)象的功能)的計(jì)算機(jī)系統(tǒng)。圖形對(duì)
象可包括窗口、對(duì)話框等等。如本文中所使用的,術(shù)語(yǔ)"計(jì)算機(jī)系統(tǒng)"可指單個(gè)計(jì)
算機(jī)或是一起工作的多個(gè)計(jì)算機(jī)。計(jì)算機(jī)系統(tǒng)包括多個(gè)不同的動(dòng)畫/呈現(xiàn)系統(tǒng)一或 子系統(tǒng)一其中每一個(gè)都聚焦在特定的動(dòng)畫或呈現(xiàn)功能上。
^以下討論中,在兩個(gè)動(dòng)畫系統(tǒng)或子系統(tǒng)的環(huán)境中描述通信協(xié)議。但是注意, 這些僅僅是示例,并且可與兩個(gè)以上不同的動(dòng)畫系統(tǒng)或子系統(tǒng)一起使用該通信協(xié)議。
在本文中所介紹的通信協(xié)議的討論中使用術(shù)語(yǔ)"呈現(xiàn)"。"呈現(xiàn)"可被視為 動(dòng)畫過(guò)程中為顯示定義動(dòng)畫和/或顯示動(dòng)畫的步驟。"呈現(xiàn)系統(tǒng)"可以是包括呈現(xiàn) 功能的系統(tǒng)??蓪⑵鋰?yán)格定義為描述僅執(zhí)行呈現(xiàn)功能的系統(tǒng),或可將其寬泛地定義 為描述諸如動(dòng)畫系統(tǒng)等除了一個(gè)或多個(gè)呈現(xiàn)功能以外還執(zhí)行其它功能的系統(tǒng)。
類似地,如本文中所使用的術(shù)語(yǔ)"動(dòng)畫系統(tǒng)"是指包括動(dòng)畫功能的系統(tǒng)。"動(dòng) 畫系統(tǒng)"可以是僅執(zhí)行動(dòng)畫功能的系統(tǒng),或者可以是執(zhí)行諸如呈現(xiàn)功能等一個(gè)或多 個(gè)動(dòng)畫功能以及其它功能的系統(tǒng)。
使用"呈現(xiàn)系統(tǒng)"或"動(dòng)畫系統(tǒng)"這兩個(gè)特定術(shù)語(yǔ)中的任何一個(gè)并不意味著 限制與其相關(guān)聯(lián)的體系結(jié)構(gòu)和/或功能的范圍。所使用的術(shù)語(yǔ)的正確范圍可從使用 該術(shù)語(yǔ)的上下文中推導(dǎo)。
全特征的動(dòng)畫系統(tǒng)包括復(fù)雜的定時(shí)結(jié)構(gòu),其中每個(gè)動(dòng)畫可由單獨(dú)的時(shí)鐘驅(qū)動(dòng), 而這些時(shí)鐘由應(yīng)用程序開(kāi)發(fā)者所指定的任意一組規(guī)則聯(lián)系。例如,可指定一個(gè)動(dòng)畫
(A)恰好在一個(gè)不同的動(dòng)畫(B)結(jié)束的同時(shí)開(kāi)始,或可指定一組動(dòng)畫以其正常速度的 半速運(yùn)行。在更加一般的意義上,這一系統(tǒng)還可通過(guò)將一時(shí)鐘與每一件線性媒體相 關(guān)聯(lián),來(lái)處理動(dòng)畫與諸如音頻和視頻等其它類型的線性媒體的同步。
此外,時(shí)鐘是交互式的,因?yàn)樗鼈兛稍谌魏螘r(shí)候被啟動(dòng)、暫?;蛲V梗⑶?那些交互可能會(huì)引起如同步規(guī)則所指示地貫穿整個(gè)定時(shí)分層結(jié)構(gòu)傳播的改變。接前 例,如果動(dòng)畫(B)被暫停,并在五秒鐘后重新開(kāi)始,則動(dòng)畫(A)將比原始計(jì)劃晚五秒 鐘開(kāi)始。這進(jìn)而可能引起其它時(shí)鐘中的定時(shí)改變,從而可能貫穿整個(gè)定時(shí)結(jié)構(gòu)傳播。
計(jì)算對(duì)定時(shí)結(jié)構(gòu)的改變是成本高昂的無(wú)界操作,因此這一操作不適用于具有 達(dá)到可預(yù)測(cè)的幀速率的目標(biāo)的實(shí)時(shí)呈現(xiàn)系統(tǒng)。這兩個(gè)目標(biāo)(提供全特征的動(dòng)畫系統(tǒng) 和維持可預(yù)測(cè)的幀速率)是矛盾的。 一個(gè)解決方案是將系統(tǒng)分成兩個(gè)部分 一個(gè)知
道諸時(shí)鐘之間的同步規(guī)則,而另一個(gè)將每個(gè)時(shí)鐘視為完全獨(dú)立的實(shí)體。
本文中要求保護(hù)的通信協(xié)議將兩個(gè)不同的動(dòng)畫系統(tǒng)維持在同步,以使動(dòng)畫可
用高顯示刷新速率運(yùn)行而不會(huì)犧牲交互性,反之亦然。
本文中所描述的動(dòng)畫系統(tǒng)至少包括兩個(gè)組件,即主要與交互和復(fù)雜的定時(shí)結(jié)
構(gòu)相關(guān)的高級(jí)動(dòng)畫子系統(tǒng)、以及主要與以高且恒定的顯示刷新速率在顯示器上呈現(xiàn)
一個(gè)或多個(gè)動(dòng)畫相關(guān)的低級(jí)動(dòng)畫子系統(tǒng)。術(shù)語(yǔ)"高級(jí)"是指此動(dòng)畫系統(tǒng)更靠近用戶
這一事實(shí),而"低級(jí)"動(dòng)畫系統(tǒng)更靠近裸機(jī)(或是機(jī)器)。
高級(jí)動(dòng)畫子系統(tǒng)的一個(gè)示例是根據(jù)從應(yīng)用程序本身或從用戶所接收的數(shù)據(jù)來(lái)控制動(dòng)畫的應(yīng)用程序。低級(jí)動(dòng)畫子系統(tǒng)的示例是控制動(dòng)畫數(shù)據(jù)到物理顯示的動(dòng)畫的 顯示設(shè)備系統(tǒng)。顯示設(shè)備系統(tǒng)包括硬件組件、以及可被包括在顯卡硬件(未明確示 出)或被包括在不是物理地駐留在顯卡上的組件中的軟件組件。
在本討論中,將把顯示設(shè)備作為是顯示系統(tǒng)或者動(dòng)畫系統(tǒng)或子系統(tǒng)來(lái)參考。 但是注意,顯示系統(tǒng)的所有組件和處理并非都必須物理地駐留在該顯示設(shè)備上。如 本文中所使用的術(shù)語(yǔ)"顯示設(shè)備"還包括控制顯示器和任何種類的顯示存儲(chǔ)器的處 理器操作。
通常認(rèn)為動(dòng)畫過(guò)程在包括高級(jí)動(dòng)畫子系統(tǒng)和低級(jí)動(dòng)畫子系統(tǒng)兩者的單個(gè)機(jī)器 上的進(jìn)程中運(yùn)行(使用單個(gè)動(dòng)畫系統(tǒng))。但是,本文中針對(duì)兩個(gè)不同的動(dòng)畫系統(tǒng)所 描述的通信協(xié)議預(yù)期高級(jí)和低級(jí)動(dòng)畫子系統(tǒng)(l)作為單個(gè)進(jìn)程中的兩個(gè)線程運(yùn)行, (2)作為單個(gè)機(jī)器上的兩個(gè)不同進(jìn)程運(yùn)行;或者(3)在被網(wǎng)絡(luò)分開(kāi)的兩個(gè)不同機(jī)器上 運(yùn)行,諸如在客戶機(jī)-服務(wù)器體系結(jié)構(gòu)中。
示例性服務(wù)器-客戶機(jī)系統(tǒng)
圖1是根據(jù)本文中所描述的系統(tǒng)和方法的示例性服務(wù)器-客戶機(jī)系統(tǒng)100的框 圖。服務(wù)器-客戶機(jī)系統(tǒng)100包括通過(guò)諸如因特網(wǎng)等網(wǎng)絡(luò)106通信的服務(wù)器102和 客戶機(jī)104。
服務(wù)器102包括存儲(chǔ)器108、處理器110、用于控制通過(guò)網(wǎng)絡(luò)106的通信的網(wǎng) 絡(luò)接口卡112、以及服務(wù)器執(zhí)行標(biāo)準(zhǔn)服務(wù)器功能通常所需要的其它雜項(xiàng)硬件114。 存儲(chǔ)器IIO包括操作系統(tǒng)116和提供服務(wù)器功能的雜項(xiàng)軟件組件118。
應(yīng)用程序120還被存儲(chǔ)在存儲(chǔ)器108中,并且包括收編了控制一個(gè)或多個(gè)動(dòng) 畫功能的計(jì)算機(jī)代碼的高級(jí)動(dòng)畫子系統(tǒng)122。動(dòng)畫功能可以是窗口、對(duì)話框等等。 高級(jí)動(dòng)畫子系統(tǒng)122主要被聚焦在交互和復(fù)雜的定時(shí)結(jié)構(gòu)上。如在以下討論中將看 到的,應(yīng)用程序120可包括用戶編寫的計(jì)算機(jī)代碼和與用戶代碼隔離的系統(tǒng)計(jì)算機(jī) 代碼,其中用戶代碼經(jīng)由一個(gè)或多個(gè)應(yīng)用程序編程接口 (API)來(lái)訪問(wèn)系統(tǒng)計(jì)算機(jī) 代碼。
客戶機(jī)104包括存儲(chǔ)器130、處理器132、控制往來(lái)于網(wǎng)絡(luò)106的通信的網(wǎng)絡(luò) 接口卡134、以及顯示器136。客戶機(jī)104還包括顯示設(shè)備138以及客戶機(jī)104正 確運(yùn)作所需的雜項(xiàng)硬件140。
存儲(chǔ)器130存儲(chǔ)被配置成提供對(duì)網(wǎng)絡(luò)106的訪問(wèn)和導(dǎo)航的瀏覽器142、以及控 制客戶機(jī)104的基本功能的操作系統(tǒng)144。雜項(xiàng)軟件組件146也被存儲(chǔ)在存儲(chǔ)器130中,并且包括提供必要的客戶機(jī)104功能和客戶機(jī)服務(wù)的軟件。
顯示設(shè)備138包括低級(jí)動(dòng)畫子系統(tǒng)148,它可被存儲(chǔ)在顯示設(shè)備存儲(chǔ)器(未示 出)、顯示設(shè)備硬件組件(未示出)或客戶機(jī)104中所包括的存儲(chǔ)器130中。圖1 示出顯示設(shè)備138組件中至少有一部分可駐留在客戶機(jī)104的主存儲(chǔ)器130中。低 級(jí)動(dòng)畫子系統(tǒng)148主要被聚焦在達(dá)到高刷新幀速率(三十(30)幀每秒的最小刷新速 率)的呈現(xiàn)目標(biāo)上。支持高刷新幀速率提供了極好的結(jié)果,并且能取悅觀眾,而這 正是動(dòng)畫系統(tǒng)的終極目標(biāo)。
防礙支持動(dòng)畫的高刷新幀速率的兩個(gè)障礙是(l)等待時(shí)間、以及(2)帶寬。當(dāng)通 過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)時(shí),可將數(shù)據(jù)的目標(biāo)定為世界上的任何地方,這就可能造成很長(zhǎng)的 等待時(shí)間。等待時(shí)間的問(wèn)題防礙適當(dāng)?shù)南⒑头答仠?zhǔn)時(shí)到達(dá),并且這可能使刷新速 率受損并降低用戶體驗(yàn)。這對(duì)被配置成單個(gè)實(shí)體的動(dòng)畫系統(tǒng)而言是更大的問(wèn)題,因 為必須有規(guī)律地發(fā)送大量數(shù)據(jù)才能控制動(dòng)畫。
帶寬問(wèn)題對(duì)單實(shí)體系統(tǒng)也帶來(lái)更大的問(wèn)題。對(duì)于復(fù)雜的動(dòng)畫,為每一幀都必 須跨越特定邊界(線程、進(jìn)程、網(wǎng)絡(luò))而發(fā)送巨大量的數(shù)據(jù)。即使對(duì)本文中所描述 的包括兩個(gè)不同動(dòng)畫子系統(tǒng)的系統(tǒng)而言,使用固有地限制帶寬的調(diào)制解調(diào)器或是對(duì) 于服務(wù)大量客戶機(jī)的服務(wù)器,使用帶寬也可能是一個(gè)問(wèn)題。即使服務(wù)器僅需為簡(jiǎn)單 的動(dòng)畫發(fā)送相對(duì)少量的數(shù)據(jù),但如果必須將該數(shù)據(jù)供應(yīng)給例如四百個(gè)客戶機(jī),則它 就成為帶寬問(wèn)題。
本文中所描述的系統(tǒng)和方法提供一種在維持高刷新速率的同時(shí)將帶寬利用最 小化的有效方法。
示例性動(dòng)畫呈現(xiàn)系統(tǒng)體系結(jié)構(gòu)
圖2是根據(jù)本文中所描述的系統(tǒng)和方法的示例性動(dòng)畫呈現(xiàn)系統(tǒng)體系結(jié)構(gòu)200 的框圖。圖2所示的元素中一些是圖1中也包括的元素。為參考目的,在圖2中用 圖1中的元素所用的相同參考標(biāo)號(hào)來(lái)示出兩個(gè)圖中均包括的元素。
示例性體系結(jié)構(gòu)200包括應(yīng)用程序120和顯示設(shè)備138。應(yīng)用程序120根據(jù)以 下將更加詳細(xì)討論的通信協(xié)議216,經(jīng)由通信通道204與顯示設(shè)備138通信。如前 文所討論的,通信通道204穿越了邊界,該邊界可能是線程、進(jìn)程或機(jī)器之間的邊 界。例如,對(duì)于機(jī)器之間的邊界,通信通道204可以是如前所示的網(wǎng)絡(luò)106。
用戶代碼202經(jīng)由API邊界206與應(yīng)用程序120 —起運(yùn)作,API邊界206是 想要使用具有用戶代碼202的特征的應(yīng)用程序128的開(kāi)發(fā)者用來(lái)提供對(duì)應(yīng)用程序120的訪問(wèn)的一組系統(tǒng)API。
如前文所討論的,應(yīng)用程序120包括高級(jí)動(dòng)畫子系統(tǒng)122。高級(jí)動(dòng)畫子系統(tǒng) 122包括高級(jí)圖形組件208、高級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)210和高級(jí)定時(shí)引擎212。定時(shí) 引擎212創(chuàng)建和控制存儲(chǔ)在高級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)210中的一個(gè)或多個(gè)高級(jí)時(shí)鐘 214。
高級(jí)定時(shí)引擎212負(fù)責(zé)建立和同步高級(jí)時(shí)鐘214。因此,例如,如果假定有十 個(gè)(10)高級(jí)時(shí)鐘214要一起運(yùn)行,則高級(jí)定時(shí)引擎212同步十個(gè)(10)高級(jí)時(shí)鐘214 以同步地顯示動(dòng)畫。
高級(jí)圖形組件208存儲(chǔ)動(dòng)畫中所使用的類型的圖形。高級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)210 存儲(chǔ)與一個(gè)或多個(gè)動(dòng)畫相關(guān)聯(lián)的動(dòng)畫值(和/或與一個(gè)或多個(gè)媒體相關(guān)聯(lián)的媒體對(duì) 象)。動(dòng)畫值至少包括與動(dòng)畫相關(guān)聯(lián)的時(shí)間線(即,時(shí)鐘)。(注意,如本文中所 使用的術(shù)語(yǔ)"時(shí)鐘"和"時(shí)間線"是可互換的)。動(dòng)畫值基于高級(jí)時(shí)鐘214的值來(lái) 影響動(dòng)畫呈現(xiàn)的輸出。每個(gè)動(dòng)畫修改高級(jí)圖形組件208的一個(gè)或多個(gè)方面。
例如,對(duì)于創(chuàng)建從點(diǎn)Pl到點(diǎn)P2的線的簡(jiǎn)單動(dòng)畫,動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)210將為 Pl在時(shí)間=0處存儲(chǔ)一值,并為P2在時(shí)間=1處存儲(chǔ)一值。(Pl和P2之間的所有 點(diǎn)都是內(nèi)插的)。
示例性動(dòng)畫呈現(xiàn)系統(tǒng)體系結(jié)構(gòu)200的顯示設(shè)備138包括圖1中所示的低級(jí)動(dòng) 畫子系統(tǒng)148。低級(jí)動(dòng)畫子系統(tǒng)148是高級(jí)動(dòng)畫子系統(tǒng)122的等價(jià)結(jié)構(gòu),并且包括 低級(jí)圖形組件218、低級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)220和低級(jí)定時(shí)引擎222。定時(shí)引擎222 創(chuàng)建一個(gè)或多個(gè)低級(jí)時(shí)鐘224,它們被存儲(chǔ)在低級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)中。
低級(jí)動(dòng)畫子系統(tǒng)148的組件(218-224)類似于高級(jí)動(dòng)畫子系統(tǒng)122的組件(208 -214),并且它們的功能和互操作性和前述類似。
如示例性動(dòng)畫呈現(xiàn)系統(tǒng)體系結(jié)構(gòu)200的體系結(jié)構(gòu),即把動(dòng)畫系統(tǒng)分解成兩個(gè) 子系統(tǒng)的體系結(jié)構(gòu)有幾個(gè)優(yōu)點(diǎn)。如果應(yīng)用程序在交互上成本高昂并且花費(fèi)大量額外 開(kāi)銷,則動(dòng)畫可以繼續(xù);它不必在動(dòng)畫能夠繼續(xù)以前等待交互部分完成。在非分解 的系統(tǒng)中,如果應(yīng)用程序不向顯示器提供有規(guī)律的數(shù)據(jù)更新,則顯示器可能會(huì)繪制 靜態(tài)圖像而不是運(yùn)動(dòng)的動(dòng)畫。
在系統(tǒng)處理信息的同時(shí)所顯示的狀態(tài)帶狀指示器表征了該問(wèn)題的一個(gè)常見(jiàn)示 例。通常,指示器按照例如指示某個(gè)處理正在進(jìn)行的從左到右的方向進(jìn)展。但是, 有時(shí)狀態(tài)指示器停止,而用戶不能分辨系統(tǒng)是已經(jīng)鎖住了還是仍在處理某些事務(wù)。 這就是動(dòng)畫器的交互部分沒(méi)有及時(shí)向顯示部分提供更新的數(shù)據(jù)來(lái)滿足幀速率刷新的結(jié)果。
這一系統(tǒng)對(duì)視頻來(lái)說(shuō)尤其糟糕。對(duì)于視頻,幀可能被丟失-從而導(dǎo)致假信號(hào) 或偽影_這僅僅是因?yàn)橄到y(tǒng)正忙于照管另一個(gè)任務(wù)(可能和移動(dòng)鼠標(biāo)光標(biāo)一樣的 不重要)。
在分解的動(dòng)畫系統(tǒng)中,低級(jí)動(dòng)畫子系統(tǒng)148與高級(jí)動(dòng)畫子系統(tǒng)122異步地運(yùn)
行,因此即使當(dāng)高級(jí)動(dòng)畫子系統(tǒng)122被使其不能在幀被刷新以前重新繪制該幀的任
務(wù)所束縛時(shí),低級(jí)動(dòng)畫子系統(tǒng)也繼續(xù)運(yùn)行(即,繪制)。因此,分解的動(dòng)畫系統(tǒng)無(wú) 縫地顯示動(dòng)畫操作,并因而提供優(yōu)越的用戶體驗(yàn)。
示例性方法實(shí)現(xiàn)基本操作
圖3是描繪諸如圖1和圖2中所示的分解的動(dòng)畫/呈現(xiàn)系統(tǒng)的基本操作的流程 圖。在以下討論中,將連續(xù)參考圖1和2中所示的元素和參考標(biāo)號(hào)。
在分解的動(dòng)畫系統(tǒng)(即,被分解為彼此異步運(yùn)作的至少兩個(gè)不同的動(dòng)畫子系 統(tǒng)的動(dòng)畫系統(tǒng))中,用戶(應(yīng)用程序)通過(guò)系統(tǒng)API告訴高級(jí)系統(tǒng)假定圖形應(yīng)如 何在顯示器上顯現(xiàn)。高級(jí)系統(tǒng)使用專門的通信協(xié)議來(lái)指導(dǎo)低級(jí)系統(tǒng)創(chuàng)建與在高級(jí)系 統(tǒng)中所建立的結(jié)構(gòu)相似的結(jié)構(gòu)。
因?yàn)楦呒?jí)系統(tǒng)被配置成在低級(jí)系統(tǒng)中創(chuàng)建若干元素,所以必然有以下參考圖4 更加詳細(xì)討論的通信協(xié)議包括若干"創(chuàng)建"消息或命令。圖3中所示的流程圖覆蓋 了當(dāng)高級(jí)動(dòng)畫子系統(tǒng)122與低級(jí)動(dòng)畫子系統(tǒng)148通信以在其中建立結(jié)構(gòu)時(shí)發(fā)生的一 些基本步驟。
在框300,高級(jí)動(dòng)畫子系統(tǒng)122發(fā)送消息以在低級(jí)動(dòng)畫子系統(tǒng)148中創(chuàng)建動(dòng)畫 對(duì)象220。然后高級(jí)動(dòng)畫子系統(tǒng)122與低級(jí)動(dòng)畫子系統(tǒng)148通信以創(chuàng)建要與剛才創(chuàng) 建的動(dòng)畫對(duì)象220包括在一起的時(shí)鐘224 (即,時(shí)間線)(框302)。
注意,動(dòng)畫對(duì)象和時(shí)間線之間并非必須要有l(wèi):l的比例。換言之, 一條時(shí)間線 可控制一個(gè)以上的動(dòng)畫對(duì)象。因此,在以上對(duì)框302所描述的步驟中,如果已經(jīng)存 在一條時(shí)間線且如果可將新創(chuàng)建的動(dòng)畫對(duì)象與現(xiàn)有的時(shí)間線相關(guān)聯(lián),則不需創(chuàng)建時(shí) 間線。
在這個(gè)時(shí)間點(diǎn)上,應(yīng)用程序120可創(chuàng)建另一個(gè)動(dòng)畫對(duì)象或修改現(xiàn)有動(dòng)畫。如 果應(yīng)用程序120被配置成創(chuàng)建另一個(gè)動(dòng)畫對(duì)象("動(dòng)畫對(duì)象"分支,框304),則 高級(jí)動(dòng)畫子系統(tǒng)122在框300向低級(jí)動(dòng)畫子系統(tǒng)138發(fā)送通信協(xié)議消息以創(chuàng)建另一 個(gè)動(dòng)畫對(duì)象220。然后高級(jí)動(dòng)畫子系統(tǒng)122在框302發(fā)送消息以將一時(shí)間線與新創(chuàng)建的動(dòng)畫對(duì)象220相關(guān)聯(lián)。該時(shí)間線可被創(chuàng)建或可以是現(xiàn)有的時(shí)間線。
應(yīng)用程序120還被配置成支持修改。高級(jí)動(dòng)畫子系統(tǒng)122可發(fā)送消息以修改 動(dòng)畫對(duì)象220和/或與其相關(guān)聯(lián)的時(shí)間線("修改"分支,框304)。除了修改動(dòng)畫
的方面的直接修改以外,"暫停"操作和"停止"操作也可以是修改。"暫停"操 作可根據(jù)典型的修改來(lái)編碼,例如,"在時(shí)間0,時(shí)鐘為10;并且在時(shí)間10,時(shí)
鐘為10。""停止"操作是用"移除動(dòng)畫"消息來(lái)發(fā)起的。
如果修改是"移動(dòng)動(dòng)畫"消息("是"分支,框306),則在框308停止動(dòng)畫。 否則("否"分支,框306),高級(jí)動(dòng)畫系統(tǒng)122發(fā)送被配置成修改現(xiàn)有動(dòng)畫的一 個(gè)或多個(gè)消息(框310)。修改現(xiàn)有動(dòng)畫還可意味著修改與現(xiàn)有動(dòng)畫相關(guān)聯(lián)的時(shí)間 線。
如前文所提及的,上述流程圖描繪了通過(guò)從高級(jí)動(dòng)畫子系統(tǒng)122發(fā)送通信協(xié) 議消息來(lái)配置低級(jí)動(dòng)畫子系統(tǒng)148的一般方法。以下在討論了通信協(xié)議的細(xì)節(jié)以 后,將更詳細(xì)地討論使用該通信協(xié)議的至少一個(gè)更具體方法實(shí)現(xiàn)。
通信協(xié)議
圖4a、 4b和4c是概述用于管理高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)之間的的傳送 的通信協(xié)議的消息/命令的表。在以下討論中,將連續(xù)參考圖1和圖2中所示出并 描述的元素和參考標(biāo)號(hào)。
圖4a描繪了描述從高級(jí)定時(shí)引擎212向低級(jí)定時(shí)引擎222發(fā)送的消息的表 400。"創(chuàng)建時(shí)鐘"消息402使低級(jí)定時(shí)引擎222為動(dòng)畫創(chuàng)建時(shí)鐘。"創(chuàng)建時(shí)鐘" 消息402包括"創(chuàng)建時(shí)鐘參數(shù)"404,這些參數(shù)是初始時(shí)鐘屬性。時(shí)鐘屬性可包括, 但不限于,持續(xù)時(shí)間(從開(kāi)始時(shí)間起)、父時(shí)鐘(此時(shí)鐘中的所有時(shí)間與其相關(guān))、 速度(相對(duì)于其父時(shí)鐘)、加速和減速。加速和減速參數(shù)指定"持續(xù)時(shí)間"中用在 "加速"或"減速"動(dòng)畫上的百分比。
"更新屬性"消息406提供對(duì)現(xiàn)有時(shí)鐘的屬性的更新。"更新屬性參數(shù)"408 包括目標(biāo)時(shí)鐘(即,具有要被更新的屬性的時(shí)鐘)、以及更新后的屬性和值。"添 加間隔"消息410指令低級(jí)定時(shí)引擎向現(xiàn)有動(dòng)畫(對(duì)象)添加間隔,并且包括"添 加間隔參數(shù)"412,它們標(biāo)識(shí)目標(biāo)時(shí)鐘、以及被添加到目標(biāo)時(shí)鐘的間隔的屬性。
該協(xié)議包括"重置同步滑動(dòng)"消息414和相關(guān)聯(lián)的"重置同步滑動(dòng)參數(shù)"416, 它們被用來(lái)維持高級(jí)動(dòng)畫子系統(tǒng)122和低級(jí)動(dòng)畫子系統(tǒng)148之間的同步。如何實(shí)現(xiàn) 此部分是關(guān)乎特定系統(tǒng)設(shè)計(jì)的問(wèn)題。在至少一個(gè)實(shí)現(xiàn)中,同步過(guò)程由以下示例描述。如果低級(jí)動(dòng)畫子系統(tǒng)148正 在控制視頻文件,并且它檢測(cè)到視頻落后(由于,例如網(wǎng)絡(luò)通信量),則低級(jí)動(dòng)畫
子系統(tǒng)148向高級(jí)動(dòng)畫子系統(tǒng)122發(fā)送"與媒體滑動(dòng)同步"消息和參數(shù)(見(jiàn)以下圖 4b),并存儲(chǔ)已發(fā)生滑動(dòng)這一事實(shí)以及滑動(dòng)的大小。
當(dāng)高級(jí)動(dòng)畫子系統(tǒng)122 (具體而言,高級(jí)定時(shí)引擎212)結(jié)束更新間隔以考慮 滑動(dòng)時(shí),它發(fā)送"重置同步滑動(dòng)"消息414和相關(guān)聯(lián)的"重置同步滑動(dòng)參數(shù)"416, 來(lái)告訴低級(jí)動(dòng)畫子系統(tǒng)148將滑動(dòng)偏移量重置為0。
關(guān)于這一特定協(xié)議消息的其它信息請(qǐng)參見(jiàn)以下圖4b。
可向低級(jí)定時(shí)引擎222發(fā)送"移除所有間隔"消息418來(lái)移除與特定時(shí)鐘相 關(guān)聯(lián)的任何現(xiàn)有間隔。目標(biāo)時(shí)鐘在"移除所有間隔參數(shù)"420中被標(biāo)識(shí)。該通信協(xié) 議中還包括"刪除時(shí)鐘"消息422,它被發(fā)送給低級(jí)定時(shí)引擎222以移除"刪除時(shí) 鐘參數(shù)"424中所標(biāo)識(shí)的目標(biāo)時(shí)鐘。
圖4b描繪了描述該通信協(xié)議中從低級(jí)定時(shí)引擎222發(fā)送到高級(jí)定時(shí)引擎212 的消息的表430。"與媒體滑動(dòng)同步"消息432為高級(jí)定時(shí)引擎212提供高級(jí)定時(shí) 引擎212與媒體組件同步而應(yīng)滑動(dòng)特定時(shí)鐘的量。***注意,這更接近正確嗎?*** "與媒體滑動(dòng)參數(shù)同步"消息434包括目標(biāo)時(shí)鐘,即要滑動(dòng)的時(shí)鐘、以及標(biāo)識(shí)滑動(dòng) 的大小的滑動(dòng)量。
該消息將數(shù)據(jù)從低級(jí)動(dòng)畫子系統(tǒng)發(fā)回高級(jí)動(dòng)畫子系統(tǒng)122。這是必要的,因?yàn)?通信通道204中存在等待時(shí)間。此情形可能發(fā)生的一種情況是在用戶激活"暫停" 命令的時(shí)候。因?yàn)橄到y(tǒng)彼此異步地通信,所以在高級(jí)動(dòng)畫子系統(tǒng)能趕上低級(jí)動(dòng)畫子 系統(tǒng)以前,低級(jí)動(dòng)畫子系統(tǒng)可處理若干個(gè)幀。結(jié)果是,低級(jí)系統(tǒng)始終運(yùn)行。
但這是用"與媒體滑動(dòng)同步"消息432來(lái)處理的,它把與動(dòng)畫相關(guān)聯(lián)的時(shí)鐘 需要"滑動(dòng)"或與低級(jí)時(shí)鐘224 "同步"來(lái)把子系統(tǒng)恢復(fù)到同步的消息帶給高級(jí)動(dòng) 畫子系統(tǒng)122。
圖4c描繪了從高級(jí)動(dòng)畫對(duì)象210發(fā)送到低級(jí)動(dòng)畫對(duì)象220的消息的表440。 表440包括"創(chuàng)建動(dòng)畫"消息442,它命令低級(jí)動(dòng)畫子系統(tǒng)148創(chuàng)建新的動(dòng)畫對(duì)象。 "創(chuàng)建動(dòng)畫參數(shù)"444包括標(biāo)識(shí)正被動(dòng)畫表現(xiàn)的屬性的類型的輸出值類型、動(dòng)畫函 數(shù)、動(dòng)畫函數(shù)以及控制時(shí)鐘。
例如,如果旋轉(zhuǎn)變換的角度被動(dòng)畫表現(xiàn),則輸出類型是"雙精度浮點(diǎn)數(shù)"。 如果線的一個(gè)端點(diǎn)被動(dòng)畫表現(xiàn),則輸出類型是"點(diǎn)"。如果矩形的顏色被動(dòng)畫表現(xiàn), 則輸出類型是"顏色"。動(dòng)畫函數(shù)在本領(lǐng)域中是公知的,并且此處可指定任何此類動(dòng)畫函數(shù)。簡(jiǎn)單的 動(dòng)畫函數(shù)的示例是"從5到10"。這意味著在間隔的開(kāi)始,動(dòng)畫函數(shù)輸出值5,在
結(jié)束它輸出10,并且在中途動(dòng)畫函數(shù)輸出值7.5等等。更加復(fù)雜的動(dòng)畫函數(shù)是"從 5到6到10"。在此,動(dòng)畫中途的輸出值是6??赏ㄟ^(guò)不僅指定值列表,還指定函 數(shù)應(yīng)輸出那些值的時(shí)間列表(之間的所有值是內(nèi)插的)來(lái)使函數(shù)更加復(fù)雜。
注意,上述動(dòng)畫函數(shù)僅僅是示例性的,并且它們并不試圖將所附權(quán)利要求書 的范圍限于這些動(dòng)畫函數(shù)。在此上下文中可使用能被視為"動(dòng)畫函數(shù)"的任何計(jì)算 機(jī)操作。
最后,如前文所討論的,新的動(dòng)畫對(duì)象的控制時(shí)鐘可以是新的時(shí)鐘,或者可 以是可以控制或不可以控制一個(gè)或多個(gè)其它動(dòng)畫對(duì)象的現(xiàn)有時(shí)鐘。
表440還包括"更新動(dòng)畫"消息446,它提供用于更新低級(jí)動(dòng)畫子系統(tǒng)148 中的現(xiàn)有動(dòng)畫的信息。"更新動(dòng)畫參數(shù)"448包括目標(biāo)動(dòng)畫(即,要被更新的動(dòng)畫)、 以及更新屬性(要被更新的屬性以及屬性的更新值)。
"創(chuàng)建動(dòng)畫集合"消息450標(biāo)識(shí)低級(jí)動(dòng)畫對(duì)象[數(shù)據(jù)庫(kù)]220中要被分組為集合 的多個(gè)動(dòng)畫。"創(chuàng)建動(dòng)畫集合參數(shù)"452標(biāo)識(shí)要被分組為集合的動(dòng)畫的初始列表。
動(dòng)畫集合在本領(lǐng)域中也是公知的。動(dòng)畫集合的存在允許開(kāi)發(fā)者創(chuàng)建不能用單 個(gè)線性內(nèi)插表達(dá)的復(fù)雜動(dòng)畫行為。例如, 一個(gè)動(dòng)畫可能將點(diǎn)重復(fù)地上下移動(dòng),而另 一個(gè)動(dòng)畫可能將點(diǎn)移到右邊。當(dāng)兩個(gè)動(dòng)畫一起運(yùn)行時(shí),該點(diǎn)表現(xiàn)為按照波型圖向右。 可以編輯動(dòng)畫集合,因此協(xié)議中存在如下所述的消息。
"將動(dòng)畫添加到集合中"消息454告訴低級(jí)系統(tǒng)把"將動(dòng)畫添加到集合中參 數(shù)456"中所標(biāo)識(shí)的動(dòng)畫添加到也在"將動(dòng)畫添加到集合中參數(shù)"456中所標(biāo)識(shí)的 動(dòng)畫集合中。類似地,"將動(dòng)畫從集合中移除"消息458和標(biāo)識(shí)目標(biāo)動(dòng)畫集合與要 從該集合中移除的集合中的動(dòng)畫的"將動(dòng)畫從集合中移除參數(shù)"460包括在一起。
表440還包括"創(chuàng)建靜態(tài)值"消息462。靜態(tài)值是在低級(jí)動(dòng)畫子系統(tǒng)148不能 支持由應(yīng)用程序120所提供的動(dòng)畫的情形中使用的。以下參考圖6更詳細(xì)地描述這 一情況。和"創(chuàng)建靜態(tài)值"消息462相關(guān)聯(lián)的是為所創(chuàng)建的靜態(tài)值標(biāo)識(shí)值類型和初 始值的"創(chuàng)建靜態(tài)值參數(shù)"464。
"更新靜態(tài)值"消息466為靜態(tài)值提供更新。"更新靜態(tài)值參數(shù)"468標(biāo)識(shí)目 標(biāo)靜態(tài)值對(duì)象、以及對(duì)應(yīng)于所標(biāo)識(shí)的靜態(tài)值的新值。
圖4(a-c)中所示的消息和參數(shù)提供一種可由高級(jí)動(dòng)畫子系統(tǒng)異步地控制由低 級(jí)動(dòng)畫子系統(tǒng)148呈現(xiàn)的動(dòng)畫的流線型的、高效的方法。因?yàn)闊o(wú)須在每個(gè)呈現(xiàn)刷新幀中發(fā)送一個(gè)或多個(gè)消息,所以顯示可以用高的、恒定的速率來(lái)呈現(xiàn)幀。與此同時(shí), 高級(jí)系統(tǒng)可在有處理時(shí)間可用時(shí)使用處理時(shí)間來(lái)向低級(jí)系統(tǒng)提供數(shù)據(jù),s卩,以較慢 和變動(dòng)的刷新速率。
示例性方法實(shí)現(xiàn)完全連接的系統(tǒng)
圖5是描繪具有完全連接的高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)的呈現(xiàn)系統(tǒng)中的動(dòng) 畫過(guò)程的示例性方法實(shí)現(xiàn)的流程圖。
圖5中所描繪的情形是應(yīng)用程序開(kāi)發(fā)者想要繪制從一固定錨點(diǎn)到另一隨時(shí) 間移動(dòng)的點(diǎn)的動(dòng)畫表現(xiàn)的直線。開(kāi)發(fā)者需要提供三樣?xùn)|西(l)呈現(xiàn)操作(例如, 在靜態(tài)點(diǎn)A和動(dòng)畫點(diǎn)B之間繪制一條線);(2)動(dòng)畫函數(shù)(例如,點(diǎn)B從(0,0)走到 (100, 100));以及(3)動(dòng)畫的定時(shí)(例如,在5秒后開(kāi)始,并運(yùn)行10秒,然后反向 重復(fù)一次)。
圖5示出高級(jí)動(dòng)畫子系統(tǒng)122對(duì)包含上述信息的應(yīng)用程序120的響應(yīng)。在框 500,高級(jí)動(dòng)畫子系統(tǒng)122從應(yīng)用程序接收這些信息。在框502,高級(jí)動(dòng)畫子系統(tǒng) 122創(chuàng)建呈現(xiàn)對(duì)象,該呈現(xiàn)對(duì)象表示一條線。在框504,高級(jí)動(dòng)畫子系統(tǒng)122創(chuàng)建 輸出從(O, O)到(IOO, IOO)的值的動(dòng)畫函數(shù)。在框506,高級(jí)動(dòng)畫子系統(tǒng)122創(chuàng)建在5 秒后開(kāi)始,運(yùn)行10秒然后反向運(yùn)行的時(shí)鐘。
低級(jí)動(dòng)畫子系統(tǒng)148可支持這些對(duì)象,因此高級(jí)動(dòng)畫子系統(tǒng)120向低級(jí)動(dòng)畫 子系統(tǒng)148發(fā)送在通信通道204上生成在框510-518中所描繪的通信的消息(框 508)。
框510:創(chuàng)建時(shí)鐘l;為時(shí)鐘l設(shè)置參數(shù),持續(xù)時(shí)間=10。 框512:為時(shí)鐘l添加間隔;從"現(xiàn)在+5"到"現(xiàn)在+ 15",從1 = 0走到 t= 10。
框514:為時(shí)鐘l添加間隔從"現(xiàn)在+15"到"現(xiàn)在+25",從t-10向
下走到t-l。
框516:創(chuàng)建動(dòng)畫l;為動(dòng)畫l設(shè)置參數(shù),從(O,O)到(IOO, 100),時(shí)鐘=時(shí)鐘1。
框518:創(chuàng)建引用動(dòng)畫1的[DrawLine](畫線)指令。
在此例中,DrawLine函數(shù)表示用于呈現(xiàn)動(dòng)畫的協(xié)議所支持的任何繪制指令。 DrawLine指令只是示例性的。
在這些消息己從高級(jí)動(dòng)畫子系統(tǒng)122發(fā)送到低級(jí)動(dòng)畫子系統(tǒng)148時(shí),低級(jí)動(dòng)畫子系統(tǒng)148獨(dú)立于高級(jí)子系統(tǒng)148運(yùn)行,并以可能達(dá)到的最高的幀速率更新該線 的位置。兩個(gè)子系統(tǒng)122、 148之間無(wú)需再發(fā)送任何其它消息。
如所示出的,本文中所介紹的通信協(xié)議通過(guò)簡(jiǎn)化被放進(jìn)通信通道204中的數(shù) 據(jù)量來(lái)優(yōu)化通信通道204。如果不使用上述短消息和參數(shù),則將必須通過(guò)管道發(fā)送 大量操作來(lái)同步系統(tǒng)。
但是,本質(zhì)上,被放進(jìn)通信通道204中的是若干時(shí)鐘的間隔的列表。對(duì)于時(shí) 鐘而言,間隔是定義好的,例如,如'在時(shí)間O和時(shí)間IO之間,該時(shí)鐘從O走到 10'(這定義了真實(shí)世界的時(shí)鐘)?;蛘?,可能需要時(shí)鐘慢一倍。在此情形中,則 '在時(shí)間O和時(shí)間IO之間,時(shí)鐘從0走到5'。
通過(guò)定義定時(shí)間隔的列表,就可定義時(shí)鐘上的每一個(gè)操作。例如,可用時(shí)鐘 間隔來(lái)定義暫停操作'在時(shí)間0,時(shí)鐘是10,且在時(shí)間10,時(shí)鐘是10,。因此, 每個(gè)操作都可被表達(dá)為一個(gè)線性間隔。
示例性方法實(shí)現(xiàn)部分連接的系統(tǒng)
圖6是描繪具有部分連接的高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)的呈現(xiàn)系統(tǒng)中的動(dòng) 畫過(guò)程的示例性方法實(shí)現(xiàn)的流程圖。
這一示例的情形是應(yīng)用程序開(kāi)發(fā)者想要繪制從固定錨點(diǎn)走到在自定義路徑 上隨時(shí)間移動(dòng)的另一個(gè)點(diǎn)的動(dòng)畫表現(xiàn)的直線。開(kāi)發(fā)者需要提供以下(l)呈現(xiàn)操作
(例如,在靜態(tài)點(diǎn)A和動(dòng)畫點(diǎn)B之間繪制一條線);(2)自定義動(dòng)畫函數(shù)(例如, 調(diào)用自定義動(dòng)畫1來(lái)計(jì)算點(diǎn)B的位置);以及(3)動(dòng)畫的定時(shí)(例如,在5秒后開(kāi) 始,并運(yùn)行10秒,然后反方向重復(fù)一次)。
在框600,高級(jí)動(dòng)畫子系統(tǒng)122接收應(yīng)用程序信息。響應(yīng)于應(yīng)用程序的請(qǐng)求, 高級(jí)動(dòng)畫子系統(tǒng)122創(chuàng)建表示該線的呈現(xiàn)對(duì)象(框602),被配置成調(diào)回用戶代碼 202的動(dòng)畫函數(shù)(框604),以及在5秒后開(kāi)始、運(yùn)行10秒然后反方向運(yùn)行的時(shí)鐘 (框606)。在框608,適當(dāng)?shù)南⒈话l(fā)送到低級(jí)動(dòng)畫子系統(tǒng)148。
因?yàn)樽远x動(dòng)畫需要用戶代碼,所以它不能由低級(jí)子系統(tǒng)處理,因此這就在 通信通道上生成了以下初始通信
框610:創(chuàng)建靜態(tài)點(diǎn)值l。
框612:創(chuàng)建引用點(diǎn)值1的[DrawLine](畫線)指令。(DrawLine指令僅僅是 示例性的;見(jiàn)上)。
在框614,低級(jí)動(dòng)畫子系統(tǒng)148接收從高級(jí)動(dòng)畫子系統(tǒng)122發(fā)送的數(shù)據(jù)。低級(jí)動(dòng)畫子系統(tǒng)148將動(dòng)畫視為靜態(tài)線。
在數(shù)據(jù)的初始發(fā)送后的每一幀上,高級(jí)動(dòng)畫子系統(tǒng)122調(diào)用用戶代碼202來(lái) 計(jì)算點(diǎn)B的位置(框620)并在框622接收新的位置值。然后高級(jí)動(dòng)畫子系統(tǒng)122 通過(guò)通信通道204將以下消息發(fā)送到低級(jí)動(dòng)畫子系統(tǒng)以更新靜態(tài)點(diǎn)值1的值
框626:用點(diǎn)B的新值來(lái)更新靜態(tài)點(diǎn)值。
示例性計(jì)算機(jī)環(huán)境
本文中所描述的各種組件和功能是用計(jì)算系統(tǒng)來(lái)實(shí)現(xiàn)的。圖7示出由標(biāo)號(hào)700 所指的此類計(jì)算系統(tǒng),即計(jì)算機(jī)的典型示例的組件。圖7中所示的組件僅僅是示例, 而并不試圖對(duì)本發(fā)明的功能范圍提出任何限制;本發(fā)明無(wú)須依賴于圖7中所示的特 征。
一般而言,可使用各種不同的通用或?qū)S糜?jì)算系統(tǒng)配置。可能適用于本發(fā)明 的公知的計(jì)算系統(tǒng)、環(huán)境、和/或配置的示例包括,但不限于,個(gè)人計(jì)算機(jī)、服務(wù) 器計(jì)算機(jī)、手持式或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可 編程消費(fèi)者電子設(shè)備、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)、包括以上任何系統(tǒng)或設(shè)備的分 布式計(jì)算環(huán)境、等等。
在許多情形中,計(jì)算機(jī)的功能由諸如程序模塊等計(jì)算機(jī)所執(zhí)行的計(jì)算機(jī)可執(zhí) 行指令來(lái)具體化。 一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型 的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。任務(wù)還可由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程 處理設(shè)備執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可位于本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì) 中。
指令和/或程序模塊在不同的時(shí)間存儲(chǔ)在或是作為計(jì)算機(jī)的部件、或可由計(jì)算 機(jī)讀出的各種計(jì)算機(jī)可讀介質(zhì)中。程序通常被分布在例如軟盤、CD-ROM、 DVD 或諸如己調(diào)制信號(hào)等某種形式的通信介質(zhì)上。它們從那里被安裝或加載到計(jì)算機(jī)的 次級(jí)存儲(chǔ)器中。在執(zhí)行時(shí),它們至少被部分地加載到計(jì)算機(jī)的主電子存儲(chǔ)器中。當(dāng) 這些及其它各種類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包含用于實(shí)現(xiàn)以下聯(lián)合微處理器或其 它數(shù)據(jù)處理器描述的步驟的指令程序和/或模塊時(shí),本文中所描述的發(fā)明包括此類 介質(zhì)。當(dāng)根據(jù)以下所描述的方法和技術(shù)來(lái)對(duì)計(jì)算機(jī)編程時(shí),本發(fā)明還包括該計(jì)算機(jī) 本身。
為說(shuō)明起見(jiàn),本文中將諸如操作系統(tǒng)等程序及其它可執(zhí)行程序組件示為離散 的框,盡管可認(rèn)識(shí)到,此類程序和組件在各個(gè)時(shí)候駐留在計(jì)算機(jī)的不同存儲(chǔ)組件中,并且由計(jì)算機(jī)的(一個(gè)或多個(gè))數(shù)據(jù)處理器執(zhí)行。
參考圖7,計(jì)算機(jī)700的組件可包括,但不限于,處理單元702、系統(tǒng)存儲(chǔ)器 704、以及將包括系統(tǒng)存儲(chǔ)器在內(nèi)的各種系統(tǒng)組件耦合到處理單元702的系統(tǒng)總線 706。系統(tǒng)總線706可以是數(shù)種類型的總線結(jié)構(gòu)中的任何類型,包括存儲(chǔ)器總線或 存儲(chǔ)器控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任何體系結(jié)構(gòu)的局部總 線。作為示例,而非限制,此類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微 通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA(EISAA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA) 局部總線、以及也稱為Mezzanine總線的外圍部件互連(PCI)總線。
計(jì)算機(jī)700通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算 機(jī)700訪問(wèn)的任何可用介質(zhì),并包括易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。 作為示例,而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。"計(jì)算 機(jī)存儲(chǔ)介質(zhì)"包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù) 據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì) 算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、 ROM、 EEPROM、閃存或其它存儲(chǔ)器技術(shù), CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ),磁帶盒、磁帶、磁盤存儲(chǔ)或 其它磁存儲(chǔ)設(shè)備,或任何其它可被用來(lái)存儲(chǔ)所需信息并可由計(jì)算機(jī)700訪問(wèn)的介 質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī) 可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任何信息傳遞介質(zhì)。術(shù)語(yǔ)"已 調(diào)制數(shù)據(jù)信號(hào)"是指以在信號(hào)中將信息編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的 信號(hào)。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接連線連接等有線介 質(zhì),以及諸如聲學(xué)、RF、紅外及其它無(wú)線介質(zhì)等無(wú)線介質(zhì)。以上任何組合也應(yīng)被 包括在計(jì)算機(jī)可讀介質(zhì)的范疇之內(nèi)。
系統(tǒng)存儲(chǔ)器704包括諸如只讀存儲(chǔ)器(ROM) 708和隨機(jī)存取存儲(chǔ)器(RAM) 710等易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)。包含諸如在啟動(dòng)期間幫 助在計(jì)算機(jī)700內(nèi)諸元件之間傳遞信息的基本例程的基本輸入/輸出系統(tǒng)712 (BIOS)通常存儲(chǔ)在ROM 708中。RAM 710通常包含可由處理單元702立即訪 問(wèn)和/或現(xiàn)在正由其操作的數(shù)據(jù)和/或程序模塊。作為示例,而非限制,圖7示出操 作系統(tǒng)714、應(yīng)用程序716、其它程序模塊718和程序數(shù)據(jù)720。
計(jì)算機(jī)700還可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。 僅作為示例,圖7示出讀或?qū)懖豢梢苿?dòng)、非易失性磁介質(zhì)的硬盤驅(qū)動(dòng)器722,讀或 寫可移動(dòng)、非易失性磁盤726的磁盤驅(qū)動(dòng)器724,以及讀或?qū)懼T如CD ROM或其它光介質(zhì)等可移動(dòng)、非易失性光盤730的光盤驅(qū)動(dòng)器728。可在示例性操作環(huán)境中 使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于, 磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)碼錄像帶、固態(tài)RAM、固態(tài)ROM、等等。 硬盤驅(qū)動(dòng)器722通常通過(guò)諸如接口 732等不可移動(dòng)存儲(chǔ)器接口連接到系統(tǒng)總線 706,而磁盤驅(qū)動(dòng)器724和光盤驅(qū)動(dòng)器728通常由諸如接口 734等可移動(dòng)存儲(chǔ)器接 口連接到系統(tǒng)總線706。
以上所討論并在圖7中示出的各驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算 機(jī)700提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。在圖7中, 例如,硬盤驅(qū)動(dòng)器722被示為存儲(chǔ)了操作系統(tǒng)715、應(yīng)用程序717、其它程序模塊 719和程序數(shù)據(jù)721。注意,這些組件可與操作系統(tǒng)714、應(yīng)用程序716、其它程序 718和程序數(shù)據(jù)720相同或不同。此處操作系統(tǒng)715、應(yīng)用程序717、其它程序模 塊719和程序數(shù)據(jù)721被賦予不同的標(biāo)號(hào)以說(shuō)明至少它們是不同的副本。用戶可通 過(guò)諸如鍵盤736和定位設(shè)備738 (通常指鼠標(biāo)、軌跡球或觸摸墊)等輸入設(shè)備將命 令和信息輸入到計(jì)算機(jī)700中。其它輸入設(shè)備(未示出)可包括話筒、操縱桿、游 戲墊、圓盤式衛(wèi)星天線、掃描儀等。這些及其它輸入設(shè)備通常通過(guò)被耦合到系統(tǒng)總 線的輸入/輸出(I/O)接口 740連接到處理單元702,但也可由諸如并行端口、游 戲端口或通用串行總線(USB)等其它接口和總線結(jié)構(gòu)連接。監(jiān)視器742或其它類 型的顯示設(shè)備也經(jīng)由諸如視頻適配器744等接口連接到系統(tǒng)總線706。除了監(jiān)視器 742以外,計(jì)算機(jī)還可包括其它外圍輸出設(shè)備(例如揚(yáng)聲器)以及一個(gè)或多個(gè)打印 機(jī)748等,它們可通過(guò)I/O接口 740連接。
計(jì)算機(jī)使用到諸如遠(yuǎn)程計(jì)算設(shè)備750等一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接在 聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算設(shè)備750可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò) PC、對(duì)等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括以上相對(duì)于計(jì)算機(jī)700所描述的 許多或全部元件。圖7中所示的邏輯連接包括局域網(wǎng)(LAN) 752和廣域網(wǎng)(WAN) 754。盡管圖7中所示的WAN 754是因特網(wǎng),但是WAN 754還可以包括其它網(wǎng)絡(luò)。 此類網(wǎng)絡(luò)環(huán)境常見(jiàn)于辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)等。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)700通過(guò)網(wǎng)絡(luò)接口或適配器756連接到 LAN 752。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)700通常包括調(diào)制解調(diào)器758或 其它用于通過(guò)因特網(wǎng)754建立通信的裝置??蓛?nèi)置或外置的調(diào)制解調(diào)器758可經(jīng)由 1/O接口 740或其它適當(dāng)機(jī)制連接到系統(tǒng)總線706。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī) 700所描述的程序模塊或其部分可被存儲(chǔ)在遠(yuǎn)程計(jì)算設(shè)備750中。作為示例,而非限制,圖7示出遠(yuǎn)程應(yīng)用程序760駐留在遠(yuǎn)程計(jì)算設(shè)備750上??梢哉J(rèn)識(shí)到,所示 的網(wǎng)絡(luò)連接是示例性的,并且可以使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。
結(jié)論
如所描述的系統(tǒng)和方法所使用的通信協(xié)議由此提供一種將高級(jí)動(dòng)畫系統(tǒng)與低 級(jí)動(dòng)畫系統(tǒng)同步的方法,從而低級(jí)系統(tǒng)可以用快的、恒定的幀刷新速率運(yùn)行,而與 此同時(shí)高級(jí)系統(tǒng)可以用為交互優(yōu)化的可變幀速率運(yùn)行。無(wú)需犧牲任何交互能力就可 實(shí)現(xiàn)優(yōu)越的圖形。該協(xié)議還將在兩個(gè)動(dòng)畫系統(tǒng)之間發(fā)送的數(shù)據(jù)量最小化,由此節(jié)省 了額外開(kāi)銷,并優(yōu)化了性能。
盡管以上描述了特定實(shí)現(xiàn)和實(shí)施例的細(xì)節(jié),但是這些細(xì)節(jié)旨在滿足法定的公 開(kāi)義務(wù),而不是要限制所附權(quán)利要求書的范圍。因此,如所附權(quán)利要求書所定義的 本發(fā)明并不局限于以上所描述的特定特征。相反,按照落入根據(jù)等效教義適當(dāng)解釋 的所附權(quán)利要求書的適當(dāng)范圍的任何形式或修改來(lái)要求保護(hù)本發(fā)明。
權(quán)利要求
1. 一種動(dòng)畫呈現(xiàn)系統(tǒng),包括高級(jí)動(dòng)畫子系統(tǒng),它處理所述系統(tǒng)的交互功能;低級(jí)動(dòng)畫子系統(tǒng),它處理所述系統(tǒng)的顯示功能;至少一個(gè)高級(jí)時(shí)鐘,它由高級(jí)動(dòng)畫操作引用;至少一個(gè)低級(jí)時(shí)鐘,它由低級(jí)動(dòng)畫操作引用;通信通道,用于根據(jù)通信協(xié)議在所述高級(jí)動(dòng)畫子系統(tǒng)和所述低級(jí)動(dòng)畫子系統(tǒng)之間發(fā)送消息;以及其中,所述通信協(xié)議包括由所述高級(jí)動(dòng)畫子系統(tǒng)提供給所述低級(jí)動(dòng)畫子系統(tǒng)的信息,所述信息指明動(dòng)畫并指定所述動(dòng)畫在指定時(shí)間段上要如何改變,由此確保所述低級(jí)動(dòng)畫系統(tǒng)具有用于處理所述動(dòng)畫的若干幀的信息。
2. 如權(quán)利要求1所述的動(dòng)畫呈現(xiàn)系統(tǒng),其特征在于,在所述高級(jí)動(dòng)畫子系統(tǒng) 和所述低級(jí)動(dòng)畫子系統(tǒng)之間的通信是異步的。
3. 如權(quán)利要求1所述的動(dòng)畫呈現(xiàn)系統(tǒng),其特征在于-所述低級(jí)動(dòng)畫子系統(tǒng)以恒定的顯示幀刷新速率呈現(xiàn)動(dòng)畫;以及 所述高級(jí)動(dòng)畫子系統(tǒng)以慢于所述恒定顯示幀刷新速率的可變速率處理交互。
4. 如權(quán)利要求1所述的動(dòng)畫呈現(xiàn)系統(tǒng),其特征在于,所述通信協(xié)議還包括從 所述低級(jí)動(dòng)畫子系統(tǒng)向所述高級(jí)動(dòng)畫子系統(tǒng)發(fā)送的至少一個(gè)消息,所述消息用于處 理所述高級(jí)動(dòng)畫子系統(tǒng)和所述低級(jí)動(dòng)畫子系統(tǒng)之間的同步。
5. 如權(quán)利要求4所述的動(dòng)畫呈現(xiàn)系統(tǒng),其特征在于,從所述低級(jí)動(dòng)畫子系統(tǒng) 向所述高級(jí)動(dòng)畫子系統(tǒng)發(fā)送的一個(gè)消息還包括"與媒體滑動(dòng)同步"消息,所述"與 媒體滑動(dòng)同步"消息標(biāo)識(shí)與動(dòng)畫相關(guān)聯(lián)的目標(biāo)時(shí)鐘、以及所述目標(biāo)時(shí)鐘為將所述高 級(jí)動(dòng)畫子系統(tǒng)與所述低級(jí)動(dòng)畫子系統(tǒng)正在運(yùn)行的動(dòng)畫同步而必須滑動(dòng)的量。
6. 如權(quán)利要求1所述的動(dòng)畫呈現(xiàn)系統(tǒng),其特征在于 所述高級(jí)動(dòng)畫子系統(tǒng)還包括高級(jí)定時(shí)引擎; 所述低級(jí)動(dòng)畫子系統(tǒng)還包括低級(jí)定時(shí)引擎;以及所述通信協(xié)議還包括從所述高級(jí)定時(shí)引擎向所述低級(jí)定時(shí)引擎發(fā)送的以下參 數(shù)化的消息帶有初始時(shí)鐘屬性參數(shù)的創(chuàng)建時(shí)鐘消息;帶有目標(biāo)時(shí)鐘參數(shù)和更新屬性參數(shù)的更新屬性消息;帶有目標(biāo)時(shí)鐘參數(shù)和間隔屬性參數(shù)的添加間隔消息; 帶有目標(biāo)時(shí)鐘參數(shù)的重置同步滑動(dòng)消息; 帶有目標(biāo)時(shí)鐘參數(shù)的移除所有間隔消息;以及 帶有要?jiǎng)h除的目標(biāo)時(shí)鐘參數(shù)的刪除時(shí)鐘消息。
7. 如權(quán)利要求1所述的動(dòng)畫呈現(xiàn)系統(tǒng),其特征在于.-所述高級(jí)動(dòng)畫子系統(tǒng)還包括高級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù); 所述低級(jí)動(dòng)畫子系統(tǒng)還包括低級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù);所述通信協(xié)議還包括從所述高級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù)向所述低級(jí)動(dòng)畫對(duì)象數(shù)據(jù)庫(kù) 發(fā)送的以下參數(shù)化的消息帶有輸出值類型參數(shù)、動(dòng)畫函數(shù)參數(shù)和控制時(shí)鐘參數(shù)的創(chuàng)建動(dòng)畫消息; 帶有目標(biāo)動(dòng)畫參數(shù)和更新屬性參數(shù)的更新動(dòng)畫消息;帶有輸出值類型參數(shù)、動(dòng)畫函數(shù)參數(shù)和控制時(shí)鐘參數(shù)的創(chuàng)建動(dòng)畫消息;帶有目標(biāo)動(dòng)畫參數(shù)和更新屬性參數(shù)的更新動(dòng)畫消息;帶有動(dòng)畫參數(shù)列表的創(chuàng)建動(dòng)畫集合消息;帶有目標(biāo)動(dòng)畫集合參數(shù)和要添加的動(dòng)畫參數(shù)的將動(dòng)畫添加到集合消息; 帶有目標(biāo)動(dòng)畫集合參數(shù)和要移除的動(dòng)畫參數(shù)的將動(dòng)畫從集合中移除消息;帶有值類型參數(shù)和初始值參數(shù)的創(chuàng)建靜態(tài)值消息;以及 帶有目標(biāo)靜態(tài)值對(duì)象參數(shù)和新值參數(shù)的更新靜態(tài)值參數(shù)。
8. —種用于處理動(dòng)畫應(yīng)用程序的方法,包括將來(lái)自所述動(dòng)畫應(yīng)用程序的動(dòng)畫數(shù)據(jù)接收到高級(jí)動(dòng)畫子系統(tǒng)中; 根據(jù)通信協(xié)議通過(guò)通信通道將動(dòng)畫信息從所述高級(jí)動(dòng)畫子系統(tǒng)發(fā)送到低級(jí)動(dòng) 畫子系統(tǒng),以使所述低級(jí)動(dòng)畫子系統(tǒng)能夠顯示與所述動(dòng)畫數(shù)據(jù)相關(guān)聯(lián)的動(dòng)畫;其中,所述通信協(xié)議能夠指明動(dòng)畫,并提供關(guān)于所述動(dòng)畫在特定時(shí)間段上應(yīng) 如何改變的指令,從而所述低級(jí)動(dòng)畫子系統(tǒng)可以用恒定的顯示幀刷新速率處理所述 動(dòng)畫的若干幀,而與此同時(shí)所述高級(jí)動(dòng)畫子系統(tǒng)以可變的刷新速率執(zhí)行。
9. 如權(quán)利要求8所述的方法,其特征在于,還包括所述高級(jí)動(dòng)畫子系統(tǒng)接收 來(lái)自所述低級(jí)動(dòng)畫子系統(tǒng)的至少一個(gè)協(xié)議消息,以協(xié)助所述高級(jí)動(dòng)畫子系統(tǒng)中的定 時(shí)元素至少與所述低級(jí)動(dòng)畫子系統(tǒng)中的定時(shí)元素保持同步。
10. 如權(quán)利要求8所述的方法,其特征在于,所述通信協(xié)議包括從高級(jí)動(dòng)畫子系統(tǒng)定時(shí)元素向低級(jí)動(dòng)畫子系統(tǒng)定時(shí)元素發(fā)送的以下消息-用于創(chuàng)建時(shí)鐘的消息; 用于更新時(shí)鐘屬性的消息; 用于將間隔添加到時(shí)鐘的消息; 用于移除時(shí)鐘的所有間隔的消息;以及 用于刪除時(shí)鐘的消息。
11. 如權(quán)利要求10所述的方法,其特征在于,所述通信協(xié)議還包括從高級(jí)動(dòng) 畫子系統(tǒng)定時(shí)元素向低級(jí)動(dòng)畫子系統(tǒng)定時(shí)元素發(fā)送的以下消息用于重置所述低級(jí)動(dòng)畫子系統(tǒng)中的同步滑動(dòng)值的消息。
12. 如權(quán)利要求8所述的方法,其特征在于,所述通信協(xié)議包括從高級(jí)動(dòng)畫 子系統(tǒng)動(dòng)畫對(duì)象元素向低級(jí)動(dòng)畫子系統(tǒng)動(dòng)畫對(duì)象元素發(fā)送的以下消息用于創(chuàng)建動(dòng)畫的消息; 用于更新動(dòng)畫的消息; 用于創(chuàng)建動(dòng)畫集合的消息; 用于將動(dòng)畫添加到動(dòng)畫集合中的消息;以及 用于將動(dòng)畫從動(dòng)畫集合中移除的消息。
13. 如權(quán)利要求8所述的方法,其特征在于,所述通信協(xié)議包括從高級(jí)動(dòng)畫 子系統(tǒng)動(dòng)畫對(duì)象元素向低級(jí)動(dòng)畫子系統(tǒng)動(dòng)畫對(duì)象元素發(fā)送的以下消息用于創(chuàng)建靜態(tài)顯示值的消息;以及 用于更新靜態(tài)顯示值的消息。
14. 一種系統(tǒng),包括高級(jí)動(dòng)畫子系統(tǒng),它被配置成接收來(lái)自應(yīng)用程序的動(dòng)畫信息; 低級(jí)動(dòng)畫子系統(tǒng),它被配置成根據(jù)所述動(dòng)畫信息來(lái)呈現(xiàn)一個(gè)或多個(gè)動(dòng)畫; 低級(jí)定時(shí)引擎,它被配置成監(jiān)視所述低級(jí)動(dòng)畫子系統(tǒng)中的一個(gè)或多個(gè)低級(jí)時(shí)鐘,并將所述低級(jí)時(shí)鐘與一個(gè)或多個(gè)高級(jí)時(shí)鐘同步;高級(jí)定時(shí)引擎,它被配置成根據(jù)一個(gè)或多個(gè)高級(jí)動(dòng)畫對(duì)象來(lái)監(jiān)視所述高級(jí)動(dòng)畫子系統(tǒng)中的一個(gè)或多個(gè)高級(jí)時(shí)鐘,并將動(dòng)畫消息發(fā)送到所述低級(jí)定時(shí)引擎,所述動(dòng)畫消息符合通信協(xié)議;以及其中,從所述高級(jí)定時(shí)引擎發(fā)送到所述低級(jí)定時(shí)引擎的動(dòng)畫消息指明一個(gè)或多個(gè)動(dòng)畫對(duì)象、以及所述動(dòng)畫對(duì)象在特定時(shí)間段上要如何改變。
15. 如權(quán)利要求14所述的系統(tǒng),其特征在于,所述低級(jí)定時(shí)引擎通過(guò)發(fā)送標(biāo)識(shí)高級(jí)時(shí)鐘和所述高級(jí)時(shí)鐘為維持與對(duì)應(yīng)于所述高級(jí)時(shí)鐘的低級(jí)時(shí)鐘的同步而必 須滑動(dòng)的量的"與媒體滑動(dòng)同步"消息,來(lái)將所述低級(jí)時(shí)鐘與所述高級(jí)時(shí)鐘同步。
16. 如權(quán)利要求14所述的系統(tǒng),其特征在于,所述通信協(xié)議還包括以下消息 用于標(biāo)識(shí)時(shí)鐘屬性的創(chuàng)建時(shí)鐘消息; 用于標(biāo)識(shí)更新時(shí)鐘屬性的更新屬性消息; 用于將定時(shí)間隔添加到時(shí)鐘屬性的添加間隔消息; 用于將定時(shí)間隔從時(shí)鐘屬性中移除的移除間隔消息;以及用于刪除時(shí)鐘的刪除時(shí)鐘消息。
17. 如權(quán)利要求14所述的系統(tǒng),其特征在于,所述通信協(xié)議還包括以下消息 用于創(chuàng)建動(dòng)畫的創(chuàng)建動(dòng)畫消息;用于更新現(xiàn)有動(dòng)畫的更新動(dòng)畫消息; 用于標(biāo)識(shí)要被分組的多個(gè)動(dòng)畫的創(chuàng)建動(dòng)畫集合消息;用于標(biāo)識(shí)要向所標(biāo)識(shí)的動(dòng)畫集合添加的動(dòng)畫的將動(dòng)畫添加到集合中消息;以及用于標(biāo)識(shí)要從所標(biāo)識(shí)的動(dòng)畫集合中移除的動(dòng)畫的將動(dòng)畫從集合中移除消息。
18. 如權(quán)利要求14所述的系統(tǒng),其特征在于,所述通信協(xié)議還包括以下消息 用于標(biāo)識(shí)要顯示的值類型和初始值的創(chuàng)建靜態(tài)值消息;以及 用于標(biāo)識(shí)要更新的靜態(tài)值和所述靜態(tài)值的新值的更新靜態(tài)值消息。
19. 如權(quán)利要求14所述的系統(tǒng),其特征在于,所述低級(jí)定時(shí)引擎被配置成根 據(jù)所述通信協(xié)議向所述高級(jí)定時(shí)引擎發(fā)送標(biāo)識(shí)高級(jí)時(shí)鐘以及為將所述高級(jí)時(shí)鐘與 低級(jí)時(shí)鐘同步而應(yīng)將所述高級(jí)時(shí)鐘改變多少的度量的同步消息。
20. 如權(quán)利要求14所述的系統(tǒng),其特征在于,還包括 至少一個(gè)低級(jí)動(dòng)畫對(duì)象;至少一個(gè)高級(jí)動(dòng)畫對(duì)象,它被配置成通過(guò)通信協(xié)議消息與所述低級(jí)動(dòng)畫對(duì)象 通信以創(chuàng)建和更新所述低級(jí)動(dòng)畫對(duì)象來(lái)反映所述高級(jí)動(dòng)畫對(duì)象。
21. —種動(dòng)畫呈現(xiàn)系統(tǒng)中的高級(jí)動(dòng)畫子系統(tǒng),包括 —個(gè)或多個(gè)高級(jí)時(shí)鐘;被配置成跟蹤所述一個(gè)或多個(gè)高級(jí)時(shí)鐘的高級(jí)定時(shí)引擎; 標(biāo)識(shí)動(dòng)畫的至少一部分的一個(gè)或多個(gè)動(dòng)畫對(duì)象;用于根據(jù)通信協(xié)議中所包括的消息而將動(dòng)畫數(shù)據(jù)發(fā)送到低級(jí)動(dòng)畫子系統(tǒng)的裝 置;以及其中,被發(fā)送到所述低級(jí)動(dòng)畫子系統(tǒng)的通信協(xié)議消息標(biāo)識(shí)所述低級(jí)動(dòng)畫子系 統(tǒng)中的至少一個(gè)動(dòng)畫對(duì)象,并提供關(guān)于所標(biāo)識(shí)的動(dòng)畫對(duì)象在指定的時(shí)間段上要如何 改變的數(shù)據(jù)。
22. 如權(quán)利要求21所述的高級(jí)動(dòng)畫子系統(tǒng),其特征在于,所述通信協(xié)議還包括以下消息用于標(biāo)識(shí)初始時(shí)鐘屬性的創(chuàng)建時(shí)鐘消息;用于標(biāo)識(shí)更新的時(shí)鐘屬性的更新屬性消息; 用于標(biāo)識(shí)要向時(shí)鐘添加的間隔的添加間隔消息; 用于標(biāo)識(shí)要從其移除所有間隔的時(shí)鐘的移除所有間隔消息;以及 用于標(biāo)識(shí)要被刪除的時(shí)鐘的刪除時(shí)鐘消息。
23. 如權(quán)利要求21所述的高級(jí)動(dòng)畫子系統(tǒng),其特征在于,所述通信協(xié)議還包 括以下消息用于描述要?jiǎng)?chuàng)建的動(dòng)畫的創(chuàng)建動(dòng)畫消息;以及 用于標(biāo)識(shí)要更新的動(dòng)畫以及更新屬性的更新動(dòng)畫消息。
24. 如權(quán)利要求21所述的高級(jí)動(dòng)畫子系統(tǒng),其特征在于,所述通信協(xié)議還包 括以下消息-用于標(biāo)識(shí)要被分組為一個(gè)動(dòng)畫集合的多個(gè)動(dòng)畫的創(chuàng)建動(dòng)畫集合消息; 用于標(biāo)識(shí)要被添加到所標(biāo)識(shí)的動(dòng)畫集合中的動(dòng)畫的將動(dòng)畫添加到集合中消 息;以及用于標(biāo)識(shí)要從所標(biāo)識(shí)的動(dòng)畫集合中移除的動(dòng)畫的將動(dòng)畫從集合中移除消息。
25. 如權(quán)利要求21所述的高級(jí)動(dòng)畫子系統(tǒng),其特征在于,所述通信協(xié)議還包括以下消息用于標(biāo)識(shí)要呈現(xiàn)的值類型和初始值的創(chuàng)建靜態(tài)值消息;以及 用于標(biāo)識(shí)要更新的靜態(tài)值和所述靜態(tài)值的新值的更新靜態(tài)值消息。
26. —種動(dòng)畫呈現(xiàn)系統(tǒng)中的低級(jí)動(dòng)畫子系統(tǒng),包括 一個(gè)或多個(gè)低級(jí)時(shí)鐘;標(biāo)識(shí)動(dòng)畫的至少一部分的一個(gè)或多個(gè)低級(jí)動(dòng)畫對(duì)象;被配置成跟蹤關(guān)于所述一個(gè)或多個(gè)低級(jí)動(dòng)畫對(duì)象的所述一個(gè)或多個(gè)低級(jí)時(shí)鐘 的低級(jí)定時(shí)引擎;其中,所述低級(jí)時(shí)鐘和所述低級(jí)動(dòng)畫對(duì)象是以向所述低級(jí)動(dòng)畫子系統(tǒng)提供能 以高的、恒定的顯示幀刷新速率顯示的動(dòng)畫數(shù)據(jù)的若干幀的方式、通過(guò)以可變的速率從高級(jí)動(dòng)畫子系統(tǒng)接收的通信協(xié)議消息來(lái)創(chuàng)建和更新。
全文摘要
本文描述了管理高級(jí)動(dòng)畫系統(tǒng)和低級(jí)動(dòng)畫系統(tǒng)之間的異步數(shù)據(jù)交換的一種通信協(xié)議。高級(jí)動(dòng)畫系統(tǒng)具有可變的、中等頻率的幀速率,并且針對(duì)交互而被優(yōu)化。低級(jí)動(dòng)畫系統(tǒng)具有恒定的、高頻率的幀速率,并且針對(duì)高刷新幀速率而被優(yōu)化。該通信協(xié)議包括可由高級(jí)動(dòng)畫系統(tǒng)向低級(jí)動(dòng)畫系統(tǒng)發(fā)送、以指明動(dòng)畫以及該動(dòng)畫在指定時(shí)間段上將如何改變的消息。結(jié)果是,即使沒(méi)有從高級(jí)系統(tǒng)接收到每一幀的動(dòng)畫數(shù)據(jù),低級(jí)系統(tǒng)也可以用高刷新速率來(lái)顯示動(dòng)畫。
文檔編號(hào)G06T15/70GK101416221SQ200480027930
公開(kāi)日2009年4月22日 申請(qǐng)日期2004年7月22日 優(yōu)先權(quán)日2003年10月24日
發(fā)明者A·拜歐拉, L·布蘭克, M·卡爾金斯, P·戴維 申請(qǐng)人:微軟公司