專利名稱:通過動(dòng)畫對象實(shí)例來支持圖形顯示元素的動(dòng)畫制作的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計(jì)算設(shè)備。更具體地說,本發(fā)明涉及計(jì)算機(jī)系統(tǒng)組件和子系統(tǒng),它們用于維護(hù)和提供由來自操作系統(tǒng)和/或應(yīng)用程序的數(shù)據(jù)和指令輸入來驅(qū)動(dòng)的圖形用戶界面視圖。
背景技術(shù):
就其本性而言,圖形用戶界面是高度形象化的。涉及用戶和圖形用戶界面的典型交互式會(huì)話包括多個(gè)實(shí)例用戶執(zhí)行有關(guān)顯示元素的動(dòng)作(例如,移動(dòng)指針,并且選擇圖標(biāo)或控制器),以調(diào)用操作;然后,觀察該操作的各種結(jié)果。引起用戶對特定元素或圖形用戶界面的注意或者指出活動(dòng)狀態(tài)或變化狀態(tài)的一種方法是通過該圖形元素的動(dòng)畫動(dòng)作。這里所使用的動(dòng)畫包括通過在一段時(shí)期內(nèi)對顯示元素所應(yīng)用的一連串遞增量,來改變該圖形顯示元素(例如,圖標(biāo)、控制器、窗口等)的外觀或位置。但是,動(dòng)畫也包括對非視覺顯示元素的基于時(shí)間的更改。這樣,如這里所提及的動(dòng)畫既包括視覺動(dòng)畫(即,改變視覺顯示參數(shù)值),又包括非視覺動(dòng)畫(即,隨時(shí)間的推移來改變參數(shù)值,而不影響視覺顯示元素)。
動(dòng)畫制作有潛力來增強(qiáng)計(jì)算機(jī)系統(tǒng)和應(yīng)用程序的可用性和美學(xué)吸引力。用戶界面,尤其是圖形用戶界面在計(jì)算機(jī)/用戶交互作用中發(fā)揮重要的作用。通過為該用戶提供傳達(dá)計(jì)算機(jī)程序或其組件的狀態(tài)的附加類型的信息或方法,動(dòng)畫增強(qiáng)了該計(jì)算機(jī)/用戶交互作用的體驗(yàn)。例如,動(dòng)畫允許顯示變化的進(jìn)展,這結(jié)合所理解的上下文來告訴用戶已發(fā)生的情況(例如,被刪除的文件浮動(dòng)到回收站),而不是使所選擇的項(xiàng)目僅僅消失或立即更改。另外,許多人將會(huì)同意動(dòng)畫可以讓與計(jì)算機(jī)系統(tǒng)的交互作用更加有趣,并且能夠更有效地吸引用戶的注意力。另外,動(dòng)畫也可以令對屬性值的變化自動(dòng)化。特別是,用戶模式應(yīng)用程序設(shè)立手動(dòng)計(jì)時(shí)器,然后,響應(yīng)于那些計(jì)時(shí)器來更改值。
動(dòng)畫很可能不被并入許多用戶界面,其中,這類動(dòng)畫將對用戶有益。一個(gè)原因只是出于為用戶界面元素制作動(dòng)畫的成本。動(dòng)畫制作通常是一項(xiàng)耗時(shí)/麻煩的任務(wù)。通過采取成本/利益方法來執(zhí)行圖形用戶界面中的動(dòng)畫,加入動(dòng)畫的利益應(yīng)該超過其成本。由于動(dòng)畫編程的當(dāng)前相對較高的成本,會(huì)得益于動(dòng)畫的許多應(yīng)用程序因其相對較高的實(shí)施成本而不會(huì)被加以動(dòng)畫化。
降低動(dòng)畫制作成本的一種方法是對于多種不同的用途而再使用動(dòng)畫編程。但是,通常不會(huì)再使用動(dòng)畫代碼。而是使用編程工具,在開發(fā)時(shí)間、完全在這些應(yīng)用程序本身以內(nèi)為單一(應(yīng)用程序)用途動(dòng)畫代碼進(jìn)行編程。該動(dòng)畫行為在這個(gè)編譯的程序代碼以內(nèi)被明確地加以定義。在運(yùn)行時(shí)間期間,通過只執(zhí)行這個(gè)先前被編程的代碼段,來實(shí)現(xiàn)該動(dòng)畫。除十分耗時(shí)以外,將動(dòng)畫并入程序潛在地會(huì)導(dǎo)致過度大的程序,這是由于被用來執(zhí)行顯示元素中的這些所需動(dòng)畫行為的詳細(xì)的數(shù)據(jù)和指令的緣故。
努力增強(qiáng)用戶界面中的動(dòng)畫的可編程性(programmability)已產(chǎn)生不可編輯的/整體式的動(dòng)畫腳本序列的設(shè)計(jì)和供應(yīng),從中引用可執(zhí)行的腳本段,以提供所需的動(dòng)畫行為。這類(例如)基于“同步多媒體集成語言”(SMIL)標(biāo)準(zhǔn)的已知?jiǎng)赢嬀幊谭椒ńY(jié)合了關(guān)鍵幀形成方法。這些關(guān)鍵幀形成方法依靠引用整體式、不可編輯的、動(dòng)畫腳本的特定段。
原先已知的關(guān)鍵幀形成方法展示了“在圖形用戶界面中為新的動(dòng)畫行為編程”這一方面相對缺乏靈活性。該關(guān)鍵幀形成本包括使指定的起點(diǎn)與終點(diǎn)之間的顯示元素(或元素合成)形態(tài)變化的編譯的、不可編輯的一連串動(dòng)畫指令。在動(dòng)畫序列中選擇兩個(gè)點(diǎn)、然后在那兩個(gè)點(diǎn)之間執(zhí)行該程序腳本的這個(gè)已知的關(guān)鍵幀形成動(dòng)畫制作方法可協(xié)助程序設(shè)計(jì)人員嘗試執(zhí)行在這些先前所創(chuàng)建/編譯的動(dòng)畫腳本以內(nèi)被加以具體表現(xiàn)的動(dòng)畫行為。但是,該關(guān)鍵幀形成方法將所支持的動(dòng)畫制作的范圍局限于由現(xiàn)存的基礎(chǔ)動(dòng)畫腳本定義的這些線性進(jìn)展。在將這些動(dòng)畫腳本發(fā)送給用戶/開發(fā)者之前,需要識(shí)別所有這些得到支持的動(dòng)畫行為并為它們編碼,該基礎(chǔ)動(dòng)畫腳本開發(fā)受到這一點(diǎn)的阻礙。在該動(dòng)畫腳本的使用期限期間,很可能會(huì)出現(xiàn)許多實(shí)例——其中,該腳本中不包含所需的動(dòng)畫行為。但是,該腳本不可以由用戶/開發(fā)者來加以編輯,所以無法被用來執(zhí)行先前沒有在該編譯的動(dòng)畫腳本中被加以編碼的新的所需動(dòng)畫行為。
所以,需要一種更有效率、更靈活、費(fèi)用不太高的方法,用于在圖形用戶界面顯示中執(zhí)行有趣的、可提供信息的、有意義的動(dòng)畫行為。
發(fā)明概述舉例來講,以下所描述和聲明的動(dòng)畫制作系統(tǒng)提供了一種框架,用于為圖形用戶界面顯示元素和非視覺參數(shù)值定義、創(chuàng)建和執(zhí)行動(dòng)畫行為。當(dāng)這些動(dòng)畫行為被應(yīng)用于元素時(shí),它們使與該屬性關(guān)聯(lián)的該值在該動(dòng)畫行為活動(dòng)的時(shí)間內(nèi)變化。
該動(dòng)畫制作系統(tǒng)被并入利用顯示結(jié)構(gòu)的系統(tǒng),該顯示結(jié)構(gòu)用于維護(hù)與場景(例如,計(jì)算機(jī)系統(tǒng)圖形用戶界面的顯示窗口)內(nèi)所顯示的對象相對應(yīng)的一組元素。這些元素包括影響該元素的顯示特征的可變屬性值。這種可變屬性的例子包括位置、維數(shù)、顏色、不透明度等。
該動(dòng)畫制作系統(tǒng)也利用屬性系統(tǒng)。該屬性系統(tǒng)維護(hù)與由該顯示結(jié)構(gòu)所維護(hù)的這些元素關(guān)聯(lián)的屬性。該屬性系統(tǒng)支持動(dòng)態(tài)屬性——能夠隨時(shí)間的推移而加以修改的屬性。
該動(dòng)畫制作系統(tǒng)也包括一些動(dòng)畫類,這些動(dòng)畫類規(guī)定可以對基本值執(zhí)行的特定動(dòng)畫行為。從這些動(dòng)畫類中實(shí)例化動(dòng)畫對象。這類動(dòng)畫對象實(shí)例提供影響被分配給這些動(dòng)態(tài)屬性的值的時(shí)變值。在正在根據(jù)關(guān)聯(lián)的動(dòng)畫對象來驅(qū)動(dòng)顯示(包括隨時(shí)間的推移而變化的這些元素)的應(yīng)用程序的指導(dǎo)下,創(chuàng)建這類動(dòng)畫對象,并將其附屬于由該屬性系統(tǒng)維護(hù)的屬性。
附圖簡述所附權(quán)利要求書詳細(xì)陳述了本發(fā)明的各種特點(diǎn),但通過以下結(jié)合附圖而進(jìn)行的詳細(xì)說明,可以最佳程度地理解本發(fā)明的各種優(yōu)點(diǎn)。在這些附圖中
圖1是框圖,描繪了用于執(zhí)行本發(fā)明的實(shí)施例的示范計(jì)算機(jī)系統(tǒng);圖2是示范的高級示意圖,描繪了一種圖形管理結(jié)構(gòu)的主要組件,該圖形管理結(jié)構(gòu)包括用于支持圖形顯示元素的動(dòng)畫制作的動(dòng)畫制作系統(tǒng);圖3是流程圖,概述了具體表現(xiàn)本發(fā)明的系統(tǒng)中所執(zhí)行的示范的一連串重復(fù)的步驟,以維護(hù)/呈現(xiàn)動(dòng)畫圖形用戶界面;圖4是示范的動(dòng)畫類定義,用于對規(guī)定的元素屬性實(shí)行動(dòng)畫制作;圖5概述了用于為元素屬性進(jìn)行動(dòng)畫的一組示范的動(dòng)畫構(gòu)造器類型;圖6概述了關(guān)于具體表現(xiàn)本發(fā)明的動(dòng)畫結(jié)構(gòu)的示范動(dòng)畫收集類;以及,圖7概述了關(guān)于具體表現(xiàn)本發(fā)明的動(dòng)畫結(jié)構(gòu)的示范的動(dòng)態(tài)動(dòng)畫收集類。
附圖的詳細(xì)說明所描述的圖形用戶界面結(jié)構(gòu)包括動(dòng)畫系統(tǒng)、屬性系統(tǒng)和顯示元素組織結(jié)構(gòu)。這些組件聯(lián)合支持圖形用戶界面顯示元素的基于屬性的動(dòng)畫,甚至支持非顯示值。這個(gè)所揭示的動(dòng)畫結(jié)構(gòu)包括動(dòng)畫系統(tǒng),該動(dòng)畫系統(tǒng)包括動(dòng)畫類、界面和收集,它們促進(jìn)創(chuàng)建和跟蹤附屬于各種圖形顯示(和非顯示)元素(例如,圖標(biāo)、對話框、滾動(dòng)條等)的動(dòng)畫實(shí)例,以實(shí)現(xiàn)這些元素所需的動(dòng)畫行為。通過更改這些顯示元素的屬性值,來實(shí)現(xiàn)為這些顯示元素動(dòng)畫化。在本發(fā)明的實(shí)施例中,由從動(dòng)畫類中被例示的并被附屬于該屬性的動(dòng)畫對象來驅(qū)動(dòng)對屬性值的變化。
在本發(fā)明的實(shí)施例中,通過使動(dòng)畫收集與元素樹內(nèi)的特定元素上的呈現(xiàn)操作相關(guān)聯(lián),來實(shí)現(xiàn)圖形的動(dòng)畫制作。一旦最初繪制動(dòng)畫元素,該呈現(xiàn)系統(tǒng)就根據(jù)動(dòng)畫行為并按時(shí)間間隔來更新該元素的顯示狀態(tài),該動(dòng)畫行為由從規(guī)定的動(dòng)畫類中被例示的動(dòng)畫對象的組件來加以定義。
在本發(fā)明的實(shí)施例中,在具有不同的刷新周期的圖形顯示系統(tǒng)中的多個(gè)層次處指定動(dòng)畫制作。按相對較高的刷新率來更新某些容易計(jì)算的動(dòng)畫。按相對較低的刷新率來更新其他更加復(fù)雜的動(dòng)畫(例如,影響其他圖形顯示對象的動(dòng)畫)。
當(dāng)被視作整體時(shí),這里所描述的該動(dòng)畫結(jié)構(gòu)提供高度靈活的平臺(tái),用于執(zhí)行各種新的動(dòng)畫行為,并將這些新的行為附屬于顯示元素,以創(chuàng)建新的、非常吸引人的動(dòng)畫顯示界面。
作為例示,圖1描繪了用于執(zhí)行具體表現(xiàn)本發(fā)明的該動(dòng)畫結(jié)構(gòu)的合適的操作環(huán)境100的例子。操作環(huán)境100只是合適的操作環(huán)境的一個(gè)例子,它并不意在對本發(fā)明的使用或功能性的范圍提出任何限制。可能適用于本發(fā)明的眾所周知的計(jì)算機(jī)系統(tǒng)、環(huán)境和/或配置包括(但不局限于)個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、膝上型/便攜式計(jì)算設(shè)備、手持計(jì)算設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境,以及類似物。
在正由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令(例如,程序模塊)所實(shí)行的一套步驟和過程的一般上下文中描述本發(fā)明。通常,程序模塊包括執(zhí)行特殊任務(wù)或?qū)嵤┨厥獾某橄髷?shù)據(jù)類型的例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。雖然參照在單一計(jì)算機(jī)系統(tǒng)上被局部執(zhí)行的過程來描述該示范實(shí)施例,但是,本發(fā)明潛在地被加入在分布式計(jì)算環(huán)境中進(jìn)行操作的網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊通常位于包括記憶存儲(chǔ)設(shè)備的本地計(jì)算機(jī)存儲(chǔ)介質(zhì)和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
繼續(xù)參照圖1,用于執(zhí)行本發(fā)明的示范系統(tǒng)包括采取計(jì)算機(jī)110的形式的通用計(jì)算設(shè)備。計(jì)算機(jī)110的組件可以包括(但不局限于)處理單元120、系統(tǒng)存儲(chǔ)器130和系統(tǒng)總線121,系統(tǒng)總線121將包括該系統(tǒng)存儲(chǔ)器的各種系統(tǒng)組件耦合到處理單元120。系統(tǒng)總線121可以是幾種類型的總線結(jié)構(gòu)(包括存儲(chǔ)總線或存儲(chǔ)控制器、外圍總線和使用各種總線構(gòu)造中的任何總線構(gòu)造的局域總線)中的任何總線結(jié)構(gòu)。舉例來講(不作限制),這類構(gòu)造包括“工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)”(ISA)總線、“微通道結(jié)構(gòu)”(MCA)總線、“增強(qiáng)的ISA(EISA)”總線、“視頻電子標(biāo)準(zhǔn)協(xié)會(huì)”(VESA)局域總線和也被稱作“中層樓(Mezzanine)總線”的“外圍組件互連”(PCI)總線。
計(jì)算機(jī)110通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)110訪問的任何可用介質(zhì),它包括易失和非易失介質(zhì)、可移動(dòng)和不可移動(dòng)的介質(zhì)。舉例來講(不作限制),計(jì)算機(jī)可讀介質(zhì)可以包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括易失和非易失的可移動(dòng)和不可移動(dòng)介質(zhì),該介質(zhì)以用于信息(例如,計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù))存儲(chǔ)的任何方法或技術(shù)來加以執(zhí)行。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括(但不局限于)RAM、ROM、EEPROM、快閃存儲(chǔ)器或其他存儲(chǔ)技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或其他光盤存儲(chǔ)器、盒式磁帶、磁帶、磁盤存儲(chǔ)器或其他磁性存儲(chǔ)設(shè)備、或可以被用來存儲(chǔ)所需信息并可以由計(jì)算機(jī)110來存取的任何其他的介質(zhì)。通信介質(zhì)通常具體表現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或調(diào)制數(shù)據(jù)信號(hào)(例如,載波或其他傳送機(jī)制)中的其他數(shù)據(jù),它包括任何信息傳遞介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號(hào)”意味著一種信號(hào),該信號(hào)的一個(gè)或多個(gè)特征按這樣一種方式來加以設(shè)置或更改,以便為該信號(hào)中的信息編碼。舉例來講(不作限制),通信介質(zhì)包括有線介質(zhì)(例如,有線網(wǎng)絡(luò)或直線連接)和無線介質(zhì)(例如,聲音、RF、紅外線和其他無線介質(zhì))。以上任何內(nèi)容的組合也應(yīng)該被包括在計(jì)算機(jī)可讀介質(zhì)的范圍以內(nèi)。
系統(tǒng)存儲(chǔ)器130包括采取易失和/或非易失存儲(chǔ)器(例如,只讀存儲(chǔ)器(ROM)131和隨機(jī)存取存儲(chǔ)器(RAM)132)形式的計(jì)算機(jī)存儲(chǔ)介質(zhì)?;据斎?輸出系統(tǒng)133(BIOS)有時(shí)被存儲(chǔ)在ROM 131中,該基本輸入/輸出系統(tǒng)包含有助于在計(jì)算機(jī)110內(nèi)的各個(gè)元件之間傳送信息(例如,在啟動(dòng)期間)的這些基本例行程序。RAM 132通常包含可立即由處理單元120進(jìn)行存取并且/或者目前正由處理單元120進(jìn)行操作的數(shù)據(jù)和/或程序模塊。舉例來講(不作限制),圖1展示了操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136和程序數(shù)據(jù)137。
計(jì)算機(jī)110也可以包括其他可移動(dòng)/不可移動(dòng)的易失/非易失計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅僅舉例來講,圖1展示了從不可移動(dòng)的非易失磁性介質(zhì)讀取或?qū)ζ鋵懭氲挠脖P驅(qū)動(dòng)器140、從可移動(dòng)的非易失磁盤152讀取或?qū)ζ鋵懭氲拇疟P驅(qū)動(dòng)器151,以及從可移動(dòng)的非易失光盤156(例如,CD ROM或其他光學(xué)介質(zhì))讀取或?qū)ζ鋵懭氲墓獗P驅(qū)動(dòng)器155。該示范操作環(huán)境中可以使用的其他可移動(dòng)/不可移動(dòng)的易失/非易失計(jì)算機(jī)存儲(chǔ)介質(zhì)包括(但不局限于)卡型盒式磁帶機(jī)、快閃存儲(chǔ)卡、數(shù)字通用光盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM和類似的存儲(chǔ)介質(zhì)。硬盤驅(qū)動(dòng)器141通常通過不可移動(dòng)的存儲(chǔ)接口(例如,接口140)而被連接到系統(tǒng)總線121,磁盤驅(qū)動(dòng)器151和光盤驅(qū)動(dòng)器155通常由可移動(dòng)的存儲(chǔ)接口(例如,接口150)連接到系統(tǒng)總線121。
以上所討論的和圖1中所展示的這些驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)110提供計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲(chǔ)。在圖1中,例如,硬盤驅(qū)動(dòng)器141被展示為存儲(chǔ)操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146和程序數(shù)據(jù)147。注意,這些部分可以等同于或不同于操作系統(tǒng)134、應(yīng)用程序135、其他程序模塊136和程序數(shù)據(jù)137。操作系統(tǒng)144、應(yīng)用程序145、其他程序模塊146和程序數(shù)據(jù)147在這里被提供不同的號(hào)碼,以展示它們至少是不同的副本。用戶可以通過輸入設(shè)備(例如,鍵盤162)和指點(diǎn)設(shè)備161(通常被稱作“鼠標(biāo)”、“跟蹤球”或“觸摸墊”)來將命令和信息輸入計(jì)算機(jī)100。其他輸入設(shè)備(未示出)可以包括話筒、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、掃描儀或類似的輸入設(shè)備。這些和其他的輸入設(shè)備經(jīng)常通過被耦合到該系統(tǒng)總線的用戶輸入接口160而被連接到處理單元120,但也可以由其他接口和總線結(jié)構(gòu)(例如,并行端口、游戲端口或通用串行總線(USB))來加以連接。監(jiān)視器191或其他類型的顯示設(shè)備也可以經(jīng)由接口(例如,視頻接口190)而被連接到系統(tǒng)總線121。除該監(jiān)視器以外,計(jì)算機(jī)還可以包括其他外圍輸出設(shè)備(例如,揚(yáng)聲器197和打印機(jī)196),這些外圍輸出設(shè)備可以通過輸出外圍接口195來加以連接。
計(jì)算機(jī)110潛在地在使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī)(例如,遠(yuǎn)程計(jì)算機(jī)180)的邏輯連接的聯(lián)網(wǎng)環(huán)境中進(jìn)行操作。遠(yuǎn)程計(jì)算機(jī)180可能是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他公共網(wǎng)絡(luò)節(jié)點(diǎn),它通常包括以上相對于計(jì)算機(jī)110而描述的許多或全部的這些單元,盡管圖1中只展示了記憶存儲(chǔ)設(shè)備181。圖1中所描繪的這些邏輯連接包括局域網(wǎng)(LAN)171和廣域網(wǎng)(WAN)173,但也可以包括其他網(wǎng)絡(luò)。這類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中很普遍。
當(dāng)被用于LAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通過網(wǎng)絡(luò)接口或適配器170而被連接到LAN 171。當(dāng)被用于WAN聯(lián)網(wǎng)環(huán)境中時(shí),計(jì)算機(jī)110通常包括調(diào)制解調(diào)器172或用于在WAN 173(例如,因特網(wǎng))上建立通信的其他裝置。調(diào)制解調(diào)器172(可能是內(nèi)置的,也可能是外置的)可以經(jīng)由用戶輸入接口160或其他合適的機(jī)制而被連接到系統(tǒng)總線121。在聯(lián)網(wǎng)環(huán)境中,相對于計(jì)算機(jī)110而描繪的程序模塊或其各個(gè)部分可以被存儲(chǔ)在該遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。舉例來講(不作限制),圖1將遠(yuǎn)程應(yīng)用程序185展示為駐留在存儲(chǔ)器存儲(chǔ)設(shè)備181上。將會(huì)理解所示的這些網(wǎng)絡(luò)連接起示范的作用,可以使用在這些計(jì)算機(jī)之間建立通信鏈路的其他裝置。
圖2是高層示意圖,它識(shí)別具體表現(xiàn)本發(fā)明的一種圖形顯示結(jié)構(gòu)的各個(gè)組件,并且并入動(dòng)畫制作系統(tǒng)的一套交互作用的功能組件。圖2中所描繪的該圖形顯示結(jié)構(gòu)被分成一套功能組件,以幫助描述本發(fā)明的示范實(shí)施例。本發(fā)明不局限于采用說明性描繪的該方式的這些組件的布置。相反,這里所描述的這些組件的功能性在本發(fā)明的選擇性實(shí)施例中被加以不同地分組。
該動(dòng)畫制作系統(tǒng)包括許多子組件,這些子組件根據(jù)應(yīng)用程序200所提出的高層指令以組方式促進(jìn)了圖形顯示對象(以及非視覺參數(shù))的動(dòng)畫化。應(yīng)用程序200可以是駐留在該操作系統(tǒng)以內(nèi)或以外的任何應(yīng)用程序或控制器。這里所描述的該動(dòng)畫基礎(chǔ)結(jié)構(gòu)在很大程度上允許委托概括通用化的動(dòng)畫制作組件來為動(dòng)畫制作編程并執(zhí)行動(dòng)畫制作。在本發(fā)明的實(shí)施例中,應(yīng)用程序200將命令提交給為一個(gè)或多個(gè)顯示對象規(guī)定/定義動(dòng)畫的該動(dòng)畫制作系統(tǒng),而不是計(jì)算被更新的位圖。
根據(jù)應(yīng)用程序200的命令,該動(dòng)畫制作系統(tǒng)構(gòu)建動(dòng)畫對象。一旦動(dòng)畫對象被實(shí)例化,它們就可以與元素樹202相關(guān)聯(lián)。響應(yīng)于應(yīng)用程序200所生成的事件,來創(chuàng)建元素樹202。這類事件的例子包括應(yīng)用程序200的開始或?qū)е滦乱晥D的創(chuàng)建的其他某個(gè)被執(zhí)行的命令。其后,在元素樹202中,該應(yīng)用程序創(chuàng)建新的元素,以后移去這些元素。
元素樹202包括分層布置的一組元素。在本發(fā)明的實(shí)施例中,元素樹202在結(jié)構(gòu)上定義了一個(gè)文檔。每個(gè)元素描述一個(gè)對象,在大多數(shù)情況中,該對象對應(yīng)于可以顯示在(例如)圖形用戶界面上的視覺圖像。元素的例子包括按鈕、表格、表格單元、列表控制、幀、圖像和段落(流動(dòng)面板)。元素樹202中的元素一般包括一個(gè)或多個(gè)屬性(例如,顏色、高度、寬度、位置、透明度等)。被分配給元素的這些屬性的值有助于定義該元素的顯示狀態(tài)。在本發(fā)明的實(shí)施例中,動(dòng)畫對象被分配給一個(gè)或多個(gè)元素/屬性組合。其后,該動(dòng)畫對象實(shí)例用于根據(jù)與這些動(dòng)畫對象實(shí)例中的每個(gè)動(dòng)畫對象實(shí)例相關(guān)聯(lián)的時(shí)間線索來呈現(xiàn)元素的屬性上的動(dòng)畫行為。
“時(shí)間線索”定時(shí)和時(shí)間線索驅(qū)動(dòng)這里所描述的該動(dòng)畫制作系統(tǒng)。這里所描述的該動(dòng)畫制作系統(tǒng)的定時(shí)方面父于該“同步多媒體集成語言”(SMIL 2.0)W3C規(guī)范。一旦被創(chuàng)建并在執(zhí)行以前,每個(gè)動(dòng)畫對象與時(shí)間線索(例如,時(shí)序定義)相關(guān)聯(lián),該時(shí)間線索控制與該動(dòng)畫對象的定義行為關(guān)聯(lián)的一連串變化的進(jìn)程。另外,以上所述的時(shí)間線索只定義動(dòng)畫行為(例如,該動(dòng)畫的持續(xù)時(shí)間、重復(fù)、加速等)的局部/相對的時(shí)標(biāo)序列。這樣,直到已為該動(dòng)畫對象分配“父”(present)時(shí)間線索(要么直接通過另一個(gè)對象,要么間接通過另一個(gè)對象),動(dòng)畫對象才能夠執(zhí)行。所以,為了執(zhí)行該動(dòng)畫對象,該相對的時(shí)間線索附屬于“父”定時(shí)定義(“父時(shí)間線索”),該“父”定時(shí)定義將該動(dòng)畫對象的相對定時(shí)定義與父時(shí)間線索所定義的實(shí)際執(zhí)行時(shí)間聯(lián)系起來。這樣,該父時(shí)間線索不會(huì)控制動(dòng)畫對象的該動(dòng)畫行為。而是該父時(shí)間線索控制該外部行為(例如,當(dāng)該動(dòng)畫制作實(shí)際上開始時(shí))。這些時(shí)間線索被保存在分層定時(shí)樹形結(jié)構(gòu)中,并且,單獨(dú)的時(shí)間線索具有相對于父時(shí)間線索來定義其行為的性質(zhì)。相對于根部(例如,文檔、頁、幀等)時(shí)間線索來定義項(xiàng)層時(shí)間線索。
有許多方法可以使父時(shí)間線索與動(dòng)畫對象相關(guān)聯(lián),該動(dòng)畫對象具有定義其局部動(dòng)畫定時(shí)行為的其自己的內(nèi)部時(shí)間線索。舉例來講,父時(shí)間線索是該動(dòng)畫對象所附屬的定時(shí)定義。在指定時(shí)間線索的一種示范模式中,請求創(chuàng)建動(dòng)畫對象的實(shí)體(例如,應(yīng)用程序)規(guī)定關(guān)于該動(dòng)畫對象的時(shí)間線索所附屬的父時(shí)間線索。在這種情況下,該動(dòng)畫對象的時(shí)間線索在創(chuàng)建時(shí)刻識(shí)別該父時(shí)間線索,并且,這個(gè)被創(chuàng)建的動(dòng)畫對象是一個(gè)或多個(gè)元素/屬性組合(該動(dòng)畫對象其后與之關(guān)聯(lián))所使用的那個(gè)實(shí)際執(zhí)行的動(dòng)畫對象(與副本相對)。
在指定關(guān)于動(dòng)畫對象的時(shí)間線索的另一種示范模式中,創(chuàng)建部分完全的動(dòng)畫對象類,該類包括其自己的時(shí)間線索,但不包括父時(shí)間線索。這種不完全形式的動(dòng)畫對象定義(缺乏父時(shí)間線索)在這里被稱作“動(dòng)畫模板”。不執(zhí)行這些動(dòng)畫模板,而是創(chuàng)建動(dòng)畫模板的副本(或克隆),并且,為這些新的動(dòng)畫實(shí)例中的每個(gè)動(dòng)畫實(shí)例分配這個(gè)新的動(dòng)畫所附屬的元素的動(dòng)畫父時(shí)間線索。在這類實(shí)例中,被克隆的動(dòng)畫對象的該父時(shí)間線索是由這個(gè)被克隆的動(dòng)畫對象所附屬的元素規(guī)定的那個(gè)父時(shí)間線索。若缺乏特殊的父時(shí)間線索定時(shí)定義,則允許從單一動(dòng)畫模板中創(chuàng)建多個(gè)克隆,并且,每個(gè)“被克隆”的動(dòng)畫對象采用由它所附屬的該元素定義的元素指定動(dòng)畫執(zhí)行(例如,開始、暫停等)定時(shí)。由于本系統(tǒng)支持以后指定父時(shí)間線索,因此,為放置到元素樹202上而被創(chuàng)建的動(dòng)畫對象不要求在創(chuàng)建時(shí)刻明確地指定父時(shí)間線索,盡管要完成這類定時(shí)信息,以允許執(zhí)行該動(dòng)畫制作。
作為選擇,應(yīng)用程序200經(jīng)由媒體集成層(MIL)界面206,將動(dòng)畫對象直接傳遞到媒體集成層(MIL)204。舉例來講,Beda等人的、2002年6月27日提交的標(biāo)題為《多層圖形處理系統(tǒng)和方法》的美國專利申請(序號(hào)為10/184795)中描述了MIL 204,該專利申請的這些內(nèi)容通過引用被特別包括于此,包括其中所包含的任何引用的內(nèi)容。在本發(fā)明的實(shí)施例中,從應(yīng)用程序200那里直接被傳入MIL界面206的動(dòng)畫對象要求明確地指定父時(shí)間線索,或者,不執(zhí)行該動(dòng)畫對象。
MIL 204包括經(jīng)由MIL界面206來存取的一套圖形顯示對象呈現(xiàn)和控制組件。舉例來講,Beda等人的、2002年6月27日提交的標(biāo)題為《關(guān)于場景圖的類屬參數(shù)化》的美國專利申請(序號(hào)為10/184796)中描述了MIL界面206,該專利申請的這些內(nèi)容通過引用被特別包括于此,包括其中所包含的任何引用的內(nèi)容。MIL界面206是應(yīng)用程序200或提出系統(tǒng)(presenter system)208(以下所描述的)借以依靠來建立應(yīng)用程序的顯示幀的低層說明的界面。MIL界面206包括一組方法調(diào)用DrawLine(...)、PushTransform(...)和PopTransform(...)。由MIL界面206提供服務(wù)的這些調(diào)用描述場景/文檔/或圖形用戶界面。
這里所提到的本發(fā)明提供了一種基礎(chǔ)結(jié)構(gòu),用于定義關(guān)于圖形對象的動(dòng)畫以及隨時(shí)間的推移而改變的任何參數(shù)值。這樣,可以由各種圖形呈現(xiàn)引擎(例如,包括這里所概述的MIL 204)中的任何圖形呈現(xiàn)引擎來執(zhí)行這個(gè)實(shí)際的動(dòng)畫。
元素樹202所維護(hù)的這些元素代表高層圖形項(xiàng)目(例如,按鈕、滾動(dòng)條等)。在本發(fā)明的實(shí)施例中,不可以直接由MIL 204組件使用在高層描述的這類圖形對象。這樣,提出系統(tǒng)208內(nèi)的提出器(presenter)將元素樹202(該提出器與其關(guān)聯(lián))的組成部分編譯/轉(zhuǎn)變?yōu)闃?gòu)成元素樹202的這些元素的視覺圖象(例如,線、填滿的矩形等)。提出系統(tǒng)208經(jīng)由MIL界面206,將這些視覺圖象傳入MIL 204。有許多方法可執(zhí)行提出系統(tǒng)208的功能性。Parikh等人的、2003年5月9日提交(快遞郵件EV 329734584美國)的標(biāo)題為《用于主控圖形布局/展示對象的系統(tǒng)》的美國專利申請(序號(hào)為10/(還未被分配的序號(hào)))中詳細(xì)描述了提出系統(tǒng)208的示范實(shí)施例,該專利申請的這些內(nèi)容通過引用被特別包括于此,包括其中所包含的任何引用資料的內(nèi)容。
在本發(fā)明的特定實(shí)施例中,MIL 204包括視覺高層視覺樹210,視覺高層視覺樹210能夠處理由提出系統(tǒng)208經(jīng)由MIL界面206傳入MIL 204的這些視覺圖象。視覺高層視覺樹210包含一組結(jié)構(gòu)化的圖元(例如,線、矩形、圖像等)。這組結(jié)構(gòu)化的圖元描述關(guān)于應(yīng)用程序的單個(gè)圖像幀。視覺高層視覺樹210支持被稱作“獨(dú)立動(dòng)畫”的一種類的動(dòng)畫。以下將進(jìn)一步加以描述的這些獨(dú)立動(dòng)畫不依靠提出系統(tǒng)208布局功能來實(shí)現(xiàn)動(dòng)畫制作。
視覺低層視覺樹212潛在地是視覺高層視覺樹210的平直版本。視覺低層視覺樹212被配置成迅速呈現(xiàn)并執(zhí)行經(jīng)由視覺高層視覺樹210而被傳遞到視覺低層視覺樹212的獨(dú)立動(dòng)畫。視覺低層視覺樹212潛在地在對其結(jié)構(gòu)形式(例如,視覺高層視覺樹210)的各項(xiàng)更新之間執(zhí)行多個(gè)幀。
視覺低層視覺樹212被配置成與輸出驅(qū)動(dòng)器接口。遠(yuǎn)程機(jī)器網(wǎng)絡(luò)通信驅(qū)動(dòng)器214是與應(yīng)用程序200在那里呈現(xiàn)輸出的機(jī)器相對應(yīng)的對象。該機(jī)器潛在地不同于應(yīng)用程序200在其上執(zhí)行的機(jī)器。在這種情況下,應(yīng)用程序200在網(wǎng)絡(luò)連接上傳達(dá)其視覺輸出,以便為應(yīng)用程序200的用戶在遠(yuǎn)程機(jī)器上顯示輸出。
作為選擇,視覺低層視覺樹212向圖形顯示驅(qū)動(dòng)器216呈現(xiàn)輸出。圖形顯示驅(qū)動(dòng)器216表現(xiàn)該幀顯示數(shù)據(jù)與本地機(jī)器上的硬件的通信,該本地機(jī)器負(fù)責(zé)為本地用戶將該幀引到當(dāng)前正在運(yùn)行應(yīng)用程序200的機(jī)器的輸出顯示設(shè)備(例如,視覺顯示屏幕)。
當(dāng)正在進(jìn)行動(dòng)畫時(shí),呈現(xiàn)隊(duì)列項(xiàng)目213確保動(dòng)畫之間互相同步。每次需要呈現(xiàn)新的幀時(shí)——例如,當(dāng)更改元素樹202時(shí)或當(dāng)動(dòng)畫對象使值變化時(shí),創(chuàng)建呈現(xiàn)隊(duì)列項(xiàng)目213。呈現(xiàn)隊(duì)列項(xiàng)目213一得到完全的處理,就會(huì)消逝。在執(zhí)行其同步任務(wù)的過程中,呈現(xiàn)隊(duì)列項(xiàng)目213組織以下過程為(以上所描述的)定時(shí)樹228做標(biāo)記,因而使依賴的動(dòng)畫屬性無效;調(diào)用提出系統(tǒng)208,以便將布局最后定下來,并且在該標(biāo)記程序完成之后更新視覺高層視覺樹210;以及,在提出系統(tǒng)208將該布局最后定下來之后,請求視覺樹210編譯這些變化并將其向下傳播到視覺低層視覺樹212。以下參照圖3來描述執(zhí)行呈現(xiàn)隊(duì)列項(xiàng)目213的各種功能的過程中的各個(gè)步驟。
已描述了根據(jù)所提供的動(dòng)畫值來維護(hù)并生成一個(gè)幀的數(shù)據(jù)的某些示范功能框,現(xiàn)在來注意元素樹202內(nèi)的動(dòng)畫屬性的這些來源及其時(shí)間驅(qū)動(dòng)的變化。屬性系統(tǒng)220負(fù)責(zé)維護(hù)關(guān)于屬性的值。屬性系統(tǒng)220存儲(chǔ)并計(jì)算元素上的值,以便提出系統(tǒng)208可以使用它們來創(chuàng)建視覺高層視覺樹210。屬性系統(tǒng)220支持關(guān)于屬性值的遺傳模型——其中,關(guān)于特定屬性的元素的值由該元素的子元素(children)集來繼承。
如圖2中作為例證所描繪的,屬性系統(tǒng)220從許多來源接收輸入值。應(yīng)用程序200設(shè)置由屬性系統(tǒng)220維護(hù)的、關(guān)于動(dòng)態(tài)屬性的基本值(并且也檢索其當(dāng)前值)。元素樹202向?qū)傩韵到y(tǒng)220請求值(關(guān)于元素樹202內(nèi)的元素屬性),以提供給提出系統(tǒng)208。提出系統(tǒng)208依次又使用這些屬性值來生成輸入,用于對MIL界面206的調(diào)用。在處理元素樹202的這些元素的過程期間,提出系統(tǒng)208向?qū)傩韵到y(tǒng)220請求動(dòng)態(tài)屬性基本值以及與這些元素關(guān)聯(lián)的其他信息,以便組織值,并將其分配給構(gòu)成與提出系統(tǒng)208關(guān)聯(lián)的特定視圖的這些元素。
屬性系統(tǒng)220為來自這些不同來源的值區(qū)分優(yōu)先次序。例如,屬性系統(tǒng)220允許在本地規(guī)定的屬性值優(yōu)先于屬性頁中所規(guī)定的值或從父繼承的值。屬性系統(tǒng)220包括邏輯,以便為各種來源所提供的值分類,并將最高優(yōu)先值返回給該值的任何接收者。屬性系統(tǒng)220在計(jì)算關(guān)于屬性的當(dāng)前值時(shí),考慮附屬于該屬性的任何活動(dòng)動(dòng)畫。如果用戶向特定來源請求值,那么,屬性系統(tǒng)220處理這類請求。
從動(dòng)畫類222中實(shí)例化對由屬性系統(tǒng)220所維護(hù)的屬性值作出更改的動(dòng)畫對象,動(dòng)畫類222定義并執(zhí)行根據(jù)與這些動(dòng)畫對象實(shí)例(或其父)關(guān)聯(lián)的時(shí)間線索來修改屬性值的方法。動(dòng)畫類對象實(shí)例由應(yīng)用程序200來創(chuàng)建。應(yīng)用程序200也在從動(dòng)畫類222中被實(shí)例化的這些動(dòng)畫對象上設(shè)置值。應(yīng)用程序200也能夠請求特定動(dòng)畫類對象上的當(dāng)前值。當(dāng)不存在關(guān)于動(dòng)畫類對象的引用時(shí),移去該動(dòng)畫類對象。動(dòng)畫類222每個(gè)都具有描述特定動(dòng)畫行為的、能指定的屬性(例如,“From”、“To”和“Duration”)。
鍵入動(dòng)畫類,以便存在關(guān)于不同的動(dòng)畫行為及其對應(yīng)的數(shù)據(jù)類型的不同類。動(dòng)畫類的例子包括FloatAnimation——提供浮點(diǎn)值,BoxUnitAnimation——提供關(guān)于提出框的維數(shù),PointAnimation——提供矩形的左上部的位置,ColorAnimation——提供時(shí)變彩色值;以及,BoolAnimation——提供布爾值。
動(dòng)畫類220的實(shí)例是不可改變的。這樣,一旦創(chuàng)建它們,它們的屬性值就永遠(yuǎn)無法改變。這意味著應(yīng)用程序書寫者可以在多個(gè)地方再使用動(dòng)畫實(shí)例,而無須關(guān)心其定義的行為將會(huì)改變。
動(dòng)畫收集類224組織動(dòng)畫類222。動(dòng)畫收集類由應(yīng)用程序200來創(chuàng)建。應(yīng)用程序200規(guī)定動(dòng)畫收集類內(nèi)所包含的一個(gè)或多個(gè)動(dòng)畫類222。然后,應(yīng)用程序200將動(dòng)畫收集類設(shè)置為將為屬性系統(tǒng)220中的動(dòng)態(tài)屬性制作動(dòng)畫的該動(dòng)畫收集。應(yīng)用程序200也可以使動(dòng)畫收集類實(shí)例與任何動(dòng)態(tài)屬性相關(guān)聯(lián),該任何動(dòng)態(tài)屬性與元素樹202中的任何特定元素關(guān)聯(lián)。應(yīng)用程序200能夠列舉動(dòng)畫收集類224的特定動(dòng)畫收集類中的這些包含的動(dòng)畫類,并且能夠向該動(dòng)畫收集類請求組成的動(dòng)畫值。動(dòng)畫收集類實(shí)例是當(dāng)不存在關(guān)于這個(gè)特定動(dòng)畫收集類實(shí)例的引用時(shí)所收集的無用信息。
動(dòng)畫收集是處理同一種數(shù)據(jù)類型的動(dòng)畫對象收集。動(dòng)畫收集類知道其列表中的這些動(dòng)畫類的相對屬性以及如何根據(jù)被傳入該動(dòng)畫收集類實(shí)例的基本值來共同組成這些動(dòng)畫類,并且,該動(dòng)畫類返回當(dāng)前值。在本發(fā)明的實(shí)施例中,動(dòng)畫類在動(dòng)畫收集類中被栓連在一起。該動(dòng)畫收集的輸入接收基本屬性值。第一個(gè)階段(動(dòng)畫對象)將相同類型的修改過的屬性值呈現(xiàn)為到下一個(gè)潛在階段的輸入(在動(dòng)畫收集類對象內(nèi)的多個(gè)動(dòng)畫對象的情況中)。該動(dòng)畫收集的這些流水線動(dòng)畫對象所執(zhí)行的該基本值的流水線處理呈現(xiàn)關(guān)于該動(dòng)畫屬性的當(dāng)前值。這種流水線處理的結(jié)果是創(chuàng)建被串聯(lián)執(zhí)行的合成動(dòng)畫功能。
存在用于每種類型的屬性值(為其支持動(dòng)畫制作)的動(dòng)畫收集類(例如,F(xiàn)loatAnimationCollection、BoxUnitAnimationCollection、PointAnimationCollection、ColorAnimationCollection和BoolAnimationCollection)。這個(gè)動(dòng)畫收集類類型列表只是起示范的作用。精通該技術(shù)領(lǐng)域的人將會(huì)容易理解不同動(dòng)畫收集類類型的潛在的寬度。至于動(dòng)畫類220,來自動(dòng)畫收集類224的動(dòng)畫收集類的實(shí)例是不可改變的。
動(dòng)態(tài)動(dòng)畫收集類226建立于動(dòng)畫收集類224的功能性上。動(dòng)態(tài)動(dòng)畫收集類226的一個(gè)實(shí)例保持對動(dòng)畫收集類224的動(dòng)畫收集類一個(gè)實(shí)例的引用。此外,動(dòng)態(tài)動(dòng)畫收集對象的一個(gè)實(shí)例保持對元素樹202內(nèi)的元素以及對該動(dòng)態(tài)動(dòng)畫收集實(shí)例正在為其制作動(dòng)畫的該元素上的屬性的一個(gè)引用。在本發(fā)明的實(shí)施例中,應(yīng)用程序書寫者無法創(chuàng)建或存取動(dòng)態(tài)動(dòng)畫收集實(shí)例。而是一當(dāng)從應(yīng)用程序220那里接收到請求,屬性系統(tǒng)220就創(chuàng)建動(dòng)態(tài)動(dòng)畫收集實(shí)例。
當(dāng)動(dòng)畫收集類實(shí)例與動(dòng)態(tài)屬性關(guān)聯(lián)時(shí),動(dòng)態(tài)動(dòng)畫收集對象實(shí)例由屬性系統(tǒng)220來創(chuàng)建。該動(dòng)態(tài)屬性保持并/或計(jì)算與關(guān)于元素樹202中的元素的單一定義屬性(例如,寬度、高度、頂部、左邊或任何種類的元素的任何其他的定義屬性)有關(guān)聯(lián)的值。該動(dòng)態(tài)動(dòng)畫收集也保存從動(dòng)畫收集類224的動(dòng)畫類中被實(shí)例化的動(dòng)畫收集,并且因而使該動(dòng)畫收集類與元素樹202中的特定元素/屬性組合相關(guān)聯(lián)。如果向?qū)傩韵到y(tǒng)220要求動(dòng)態(tài)屬性的當(dāng)前值,則屬性系統(tǒng)220確定該動(dòng)態(tài)屬性是否具有從動(dòng)態(tài)動(dòng)畫收集類226中被實(shí)例化的關(guān)聯(lián)的動(dòng)態(tài)動(dòng)畫收集對象,并且,屬性系統(tǒng)220通過該動(dòng)態(tài)動(dòng)畫收集中的任何當(dāng)前活動(dòng)的動(dòng)畫類來處理該基本值,以提供當(dāng)前動(dòng)畫值。在本發(fā)明的實(shí)施例中,當(dāng)屬性系統(tǒng)220請求關(guān)于當(dāng)前值的特定動(dòng)態(tài)動(dòng)畫收集對象時(shí),這個(gè)規(guī)定的動(dòng)態(tài)動(dòng)畫收集將該請求傳給從動(dòng)畫收集類224之一中被實(shí)例化的合適的動(dòng)畫收集對象。該動(dòng)畫收集對象又循環(huán)通過從動(dòng)畫類222中被實(shí)例化的其動(dòng)畫對象集,以呈現(xiàn)它們的當(dāng)前值,從而提供關(guān)于該動(dòng)畫收集對象向其調(diào)用動(dòng)態(tài)動(dòng)畫收集呈現(xiàn)最終值的基礎(chǔ)。
應(yīng)用程序200所創(chuàng)建的一些動(dòng)畫可能不規(guī)定父時(shí)間線索,并且期望該動(dòng)畫制作系統(tǒng)為所請求的動(dòng)畫選擇這個(gè)合適的父時(shí)間線索。在該關(guān)聯(lián)過程期間,屬性系統(tǒng)220最初確定該動(dòng)畫收集類內(nèi)的每個(gè)動(dòng)畫類是否具有父時(shí)間線索。如果任何動(dòng)畫類都不與父時(shí)間線索關(guān)聯(lián),那么,創(chuàng)建與顯示元素(與該動(dòng)態(tài)動(dòng)畫收集關(guān)聯(lián))的父時(shí)間線索關(guān)聯(lián)的新的動(dòng)畫類。另外,注意,如果改變與顯示元素關(guān)聯(lián)的該父時(shí)間線索,那么,再建該動(dòng)態(tài)動(dòng)畫收集,以反映該父時(shí)間線索中的這個(gè)變化。
為了正確地發(fā)揮作用,動(dòng)畫收集類內(nèi)的所有動(dòng)畫類最后都必須規(guī)定控制其執(zhí)行定時(shí)的父時(shí)間線索。如果這個(gè)規(guī)定的動(dòng)畫收集類中的所有這些動(dòng)畫類都與父時(shí)間線索關(guān)聯(lián),那么,該動(dòng)態(tài)動(dòng)畫收集使用這個(gè)規(guī)定的動(dòng)畫收集類。否則,鑒于動(dòng)畫類和動(dòng)畫收集類的不變性,屬性系統(tǒng)220創(chuàng)建新的動(dòng)畫收集類,并且,這個(gè)新的動(dòng)畫收集類包括新的動(dòng)畫類——每個(gè)具有被分配的父時(shí)間線索。一旦屬性系統(tǒng)220已創(chuàng)建這個(gè)新的動(dòng)畫收集類(其每個(gè)動(dòng)畫對象具有父時(shí)間線索),屬性系統(tǒng)220就為與該元素/動(dòng)態(tài)屬性對關(guān)聯(lián)的該動(dòng)態(tài)動(dòng)畫收集提供該動(dòng)畫收集類。如果還沒有與這個(gè)對關(guān)聯(lián)的動(dòng)態(tài)動(dòng)畫收集,則該屬性系統(tǒng)將創(chuàng)建新的動(dòng)態(tài)動(dòng)畫收集226。
如以上多次指出,定時(shí)驅(qū)動(dòng)與動(dòng)畫對象關(guān)聯(lián)的這些動(dòng)畫行為,這些動(dòng)畫對象附屬于元素樹202中的元素的屬性。如這里所使用的,時(shí)間線索是根據(jù)一組定時(shí)性質(zhì)來維護(hù)運(yùn)行時(shí)間狀態(tài)的定時(shí)實(shí)體的實(shí)例。在本發(fā)明的實(shí)施例中,定時(shí)樹228是包含按分層方式來布置的定時(shí)節(jié)點(diǎn)(時(shí)間線索)的數(shù)據(jù)結(jié)構(gòu)。定時(shí)節(jié)點(diǎn)之間的關(guān)系由遺傳規(guī)則并由與定時(shí)樹228中的定時(shí)節(jié)點(diǎn)相對應(yīng)的每個(gè)時(shí)間線索的這些節(jié)點(diǎn)特定定時(shí)性質(zhì)來加以定義。這些遺傳規(guī)則包括定義與父開始時(shí)間有關(guān)的子段開始時(shí)間(children begin times)的偏移量。另外,這些遺傳關(guān)系規(guī)定控制關(guān)系。例如,如果重新開始、重復(fù)、暫停、恢復(fù)、查找或結(jié)束父,則所有這些子段(及其子段等)都這樣做。這類關(guān)系允許通過在單一父時(shí)間線索上的動(dòng)作來起動(dòng)一整組子時(shí)間線索。定時(shí)樹228保持(1)潛在地驅(qū)動(dòng)對動(dòng)畫類實(shí)例的值的變化的時(shí)間線索,以及(2)包含其他時(shí)間線索的容器時(shí)間線索。使用從這些時(shí)間線索中導(dǎo)出的進(jìn)展值來計(jì)算任何給定的動(dòng)畫對象的當(dāng)前值。在應(yīng)用程序200的啟動(dòng)時(shí)刻創(chuàng)建定時(shí)樹228。
定時(shí)樹228為圖2中所描繪的該動(dòng)畫基礎(chǔ)結(jié)構(gòu)實(shí)行定時(shí)事件通知任務(wù)。最初,當(dāng)實(shí)例化動(dòng)態(tài)動(dòng)畫收集時(shí),該動(dòng)態(tài)動(dòng)畫收集向定時(shí)樹228發(fā)出請求,以便只要其動(dòng)畫收集類對象中的動(dòng)畫實(shí)例已有進(jìn)展,就發(fā)出通知。當(dāng)該動(dòng)態(tài)動(dòng)畫收集從定時(shí)樹228那里接收到通知“其動(dòng)畫之一已有進(jìn)展”時(shí),該動(dòng)態(tài)動(dòng)畫收集實(shí)例通知屬性系統(tǒng)220該顯示元素(與它關(guān)聯(lián))上的該動(dòng)態(tài)屬性現(xiàn)在無效。顯示元素屬性的無效依次又開始在這里被稱作“從屬動(dòng)畫”的過程。在從屬動(dòng)畫處理期間,要求提出系統(tǒng)208根據(jù)與該動(dòng)畫制作關(guān)聯(lián)的該值變化來建立視覺高層視覺樹210。
定時(shí)樹228也為動(dòng)畫類222的實(shí)例執(zhí)行進(jìn)展測量和報(bào)告任務(wù)。響應(yīng)于無效,要求動(dòng)畫類222的實(shí)例報(bào)告其當(dāng)前值。動(dòng)畫類222向定時(shí)樹228詢問與每個(gè)動(dòng)畫類關(guān)聯(lián)的時(shí)間線索進(jìn)展值。其后,動(dòng)畫類222根據(jù)該定時(shí)樹所提供的進(jìn)展值來計(jì)算其當(dāng)前值,并將這些當(dāng)前值提供給任何請求實(shí)體。
呈現(xiàn)隊(duì)列項(xiàng)目213也與定時(shí)樹228相互作用。該呈現(xiàn)隊(duì)列項(xiàng)目是該操作系統(tǒng)隊(duì)列中的隊(duì)列項(xiàng)目,當(dāng)被執(zhí)行時(shí),該操作系統(tǒng)隊(duì)列使應(yīng)用程序200所生成的該應(yīng)用程序/頁/場景被向下編譯到視覺低層視覺樹212,并且最后被呈現(xiàn)到該顯示設(shè)備上。一旦被調(diào)用,該呈現(xiàn)隊(duì)列項(xiàng)目所執(zhí)行的第一件事是為定時(shí)樹228“做標(biāo)記”。這具有“讓該定時(shí)樹將其時(shí)間線索更新為該當(dāng)前時(shí)間”的效果。結(jié)果,定時(shí)樹228發(fā)出可能會(huì)引起屬性系統(tǒng)220中的許多無效的通知。當(dāng)執(zhí)行該標(biāo)記時(shí),也更新獨(dú)立動(dòng)畫的進(jìn)展值。如果在呈現(xiàn)隊(duì)列項(xiàng)目213的處理期間修改定時(shí)樹228,該呈現(xiàn)隊(duì)列項(xiàng)目將同時(shí)循環(huán)和“再標(biāo)記”,直到定時(shí)樹228穩(wěn)定為止。
獨(dú)立/從屬動(dòng)畫以上提到了獨(dú)立動(dòng)畫和從屬動(dòng)畫。在本發(fā)明的實(shí)施例中,圖2中所描繪的該動(dòng)畫制作系統(tǒng)至少支持這兩種類型的動(dòng)畫實(shí)例——其分類基于它們與其他動(dòng)畫實(shí)例的關(guān)系。獨(dú)立動(dòng)畫實(shí)例不影響視圖的布局,因此可以按更高的速率來加以刷新。獨(dú)立動(dòng)畫的例子是彩色動(dòng)畫。對象的顏色不修改其寬度或高度,所以,該顏色變化動(dòng)畫不影響如何在該頁上布置該顏色變化動(dòng)畫元素(例如,尺寸或位置)。
從屬動(dòng)畫一般更改與這些從屬動(dòng)畫關(guān)聯(lián)的元素的布局,所以,從屬動(dòng)畫要求再計(jì)算圖形用戶界面布局。這些從屬動(dòng)畫實(shí)例被存儲(chǔ)在元素樹202結(jié)構(gòu)內(nèi),以確保所有受到影響的顯示元素屬性的正確處理。由于潛在的相當(dāng)多的計(jì)算和存儲(chǔ)器存取要求,MIL 204按潛在較低的刷新率來計(jì)算從屬動(dòng)畫。
關(guān)于“動(dòng)畫”類的三個(gè)層次/階段在本發(fā)明的實(shí)施例中,通過三個(gè)層次的類及其對應(yīng)的實(shí)例來執(zhí)行被應(yīng)用于顯示元素屬性的該動(dòng)畫行為。繼續(xù)參照圖2,動(dòng)畫類222包括定義對象的一組對象類,它們能夠計(jì)算屬性值上的特定的、被定義的動(dòng)畫操作(通常是單一動(dòng)畫行為)。
在下一個(gè)層次處,動(dòng)畫收集類224定義一組對象,這組對象將來自動(dòng)畫類222的一個(gè)或多個(gè)單獨(dú)的動(dòng)畫類分組/分配到單一動(dòng)畫類定義中,從而支持單一元素屬性上的合成動(dòng)畫行為的創(chuàng)建。
在下一個(gè)層次處,動(dòng)態(tài)動(dòng)畫收集226定義對象類型,以實(shí)行/執(zhí)行元素樹202內(nèi)的元素的屬性上的動(dòng)畫行為(由動(dòng)畫收集類224之一來定義)。這種功能性得到動(dòng)態(tài)動(dòng)畫收集226的實(shí)例的促進(jìn),動(dòng)態(tài)動(dòng)畫收集226保持對動(dòng)畫收集類224的動(dòng)畫收集類實(shí)例的一個(gè)引用;以及,對元素樹202內(nèi)的元素的引用,以及對該動(dòng)態(tài)動(dòng)畫收集實(shí)例正在為其制作動(dòng)畫的該元素上的屬性的引用。當(dāng)動(dòng)畫收集類實(shí)例與動(dòng)態(tài)屬性關(guān)聯(lián)時(shí),動(dòng)態(tài)動(dòng)畫收集由屬性系統(tǒng)220來創(chuàng)建。該動(dòng)態(tài)屬性保存并/或計(jì)算與關(guān)于元素樹202中的元素的單一定義屬性(例如,寬度、高度、頂部、左邊或任何種類的元素的任何其他的定義屬性)關(guān)聯(lián)的值。該動(dòng)態(tài)動(dòng)畫收集也保持對從動(dòng)畫收集類224之一中被例示的動(dòng)畫收集類對象的引用,并因此使該動(dòng)畫收集類對象與元素樹202中的特定元素/屬性組合相關(guān)聯(lián)。
參考圖3,為圖2中的呈現(xiàn)隊(duì)列項(xiàng)目213所執(zhí)行的示范呈現(xiàn)序列概述一套步驟。如以上所解釋的,當(dāng)被執(zhí)行時(shí),呈現(xiàn)隊(duì)列項(xiàng)目213使應(yīng)用程序200所生成的該應(yīng)用程序/頁/場景被向下編譯到視覺低層視覺樹212,供顯示設(shè)備來呈現(xiàn)。注意,這一連串步驟起示范的作用,并且,該呈現(xiàn)隊(duì)列項(xiàng)目操作在本發(fā)明的其他實(shí)施例中被加以修改。
最初,在步驟300期間,呈現(xiàn)隊(duì)列項(xiàng)目213引起定時(shí)樹228的標(biāo)記。為定時(shí)樹228做標(biāo)記具有這個(gè)效果讓定時(shí)樹228將其時(shí)間線索更新為該當(dāng)前時(shí)間。結(jié)果,定時(shí)樹228發(fā)出可能會(huì)在屬性系統(tǒng)220中引起許多無效(例如,使從屬動(dòng)畫屬性無效)的通知。在本發(fā)明的實(shí)施例中,已受到該更新時(shí)間影響的動(dòng)畫對象提出Changed事件。這些事件由動(dòng)畫對象的關(guān)聯(lián)的“動(dòng)態(tài)動(dòng)畫收集”對象實(shí)例來收集和處理。該“動(dòng)態(tài)動(dòng)畫收集”對象又使元素上的其動(dòng)態(tài)屬性無效。當(dāng)在步驟300中執(zhí)行該標(biāo)記時(shí),也更新獨(dú)立動(dòng)畫的進(jìn)展值。
在為定時(shí)樹228做標(biāo)記之后,在步驟310期間,由呈現(xiàn)隊(duì)列項(xiàng)目213來執(zhí)行布局過程。在布局過程310期間,自從最后一次執(zhí)行呈現(xiàn)隊(duì)列項(xiàng)目以后,根據(jù)對元素樹202的任何更改來更新視覺高層視覺樹210。在本發(fā)明的實(shí)施例中,負(fù)責(zé)在視圖中布置已改變屬性值(作為該時(shí)間的標(biāo)記的結(jié)果)的圖形元素的提出器成為無效——這意味著它們必須再計(jì)算其布局,并創(chuàng)建將這些變化并入這些受到影響的動(dòng)態(tài)屬性的新的視覺高層視覺樹。也在步驟310期間,該顯示系統(tǒng)從潛在地影響該布局的應(yīng)用程序、該操作系統(tǒng)外殼程序等接收和分派請求。這類請求的例子包括命中測試、對用戶程序的回收,以及影響該圖形顯示的一般應(yīng)用動(dòng)作。
在布局過程310期間,定時(shí)樹228結(jié)構(gòu)可以潛在地改變(例如,增加新的定時(shí)節(jié)點(diǎn)、移去現(xiàn)存的節(jié)點(diǎn)、建立對現(xiàn)存的定時(shí)節(jié)點(diǎn)的新參考等)。如果在步驟320中確定該定時(shí)樹結(jié)構(gòu)已改變,那么,控制傳回到步驟300,并且在采取其新形式的定時(shí)樹228上再執(zhí)行該定時(shí)標(biāo)記。
如果定時(shí)樹228在結(jié)構(gòu)上還沒有改變,那么,控制從步驟320傳遞到“呈現(xiàn)”步驟330——其中,視覺高層視覺樹210將新的/更新的圖形顯示數(shù)據(jù)編譯和傳播到視覺低層視覺樹212。根據(jù)這些所接收的變化,視覺低層視覺樹212向驅(qū)動(dòng)器262和/或264呈現(xiàn)被再計(jì)算的輸出。
其后,在步驟340期間,詢問與該動(dòng)態(tài)動(dòng)畫收集關(guān)聯(lián)的這些時(shí)間線索,以便下一次確定需要為它做標(biāo)記(最接近的事件)。如果不需要進(jìn)一步的標(biāo)記,那么,控制傳遞到“結(jié)束”360。如果需要該樹的額外標(biāo)記,那么,控制傳遞到步驟350——其中,為這個(gè)動(dòng)畫元素屬性的動(dòng)態(tài)動(dòng)畫收集實(shí)例創(chuàng)建呈現(xiàn)隊(duì)列項(xiàng)目213的新實(shí)例。這個(gè)新的呈現(xiàn)隊(duì)列項(xiàng)目規(guī)定其應(yīng)該被執(zhí)行的時(shí)間。如果這個(gè)規(guī)定的執(zhí)行時(shí)間是還沒有被達(dá)到的某個(gè)時(shí)間,那么,該呈現(xiàn)隊(duì)列項(xiàng)目最初被放置在不活動(dòng)列表中。當(dāng)達(dá)到該時(shí)間時(shí),該呈現(xiàn)隊(duì)列項(xiàng)目被放置在活動(dòng)隊(duì)列內(nèi),用于根據(jù)圖3中所陳述的這些步驟來執(zhí)行。在創(chuàng)建這個(gè)新的呈現(xiàn)隊(duì)列項(xiàng)目之后,控制傳遞到“結(jié)束”360。
關(guān)于元素屬性的動(dòng)畫行為由從動(dòng)畫類222中被例示的一個(gè)或多個(gè)動(dòng)畫對象來實(shí)行。每個(gè)動(dòng)畫對象包括動(dòng)畫功能,該動(dòng)畫功能采取第一組輸入(至少包括當(dāng)前時(shí)間線索值),并產(chǎn)生適合用于呈現(xiàn)動(dòng)畫顯示元素的一種類型的輸出。動(dòng)畫類222中的各種動(dòng)畫類(例如,PointAnimation)將時(shí)間線索進(jìn)展值轉(zhuǎn)換成關(guān)于元素屬性的合適的數(shù)據(jù)類型(例如,點(diǎn))。
參考圖4,概述示范的高級動(dòng)畫類結(jié)構(gòu)。這各種動(dòng)畫類遵循共同的式樣,并執(zhí)行一組類似的界面。這些差異主要出現(xiàn)在這些屬性的數(shù)據(jù)類型中,并出現(xiàn)在一些計(jì)算中,這些計(jì)算被加以執(zhí)行(鑒于諸如浮點(diǎn)、布爾值、點(diǎn)等該特定數(shù)據(jù)類型),以便鑒于所計(jì)算的進(jìn)展值來將當(dāng)前值分配給輸入值。鑒于這里所包含的動(dòng)畫類的功能性的這些例子和說明,這類修改正好在精通該技術(shù)領(lǐng)域的人的技能范圍以內(nèi)。
在本發(fā)明的實(shí)施例中,該動(dòng)畫類結(jié)構(gòu)包括一組“動(dòng)畫屬性”400。From屬性指定開始動(dòng)畫值。To屬性規(guī)定結(jié)束動(dòng)畫值。By屬性規(guī)定動(dòng)畫制作結(jié)束時(shí)的變化(δ)值。該By屬性規(guī)定結(jié)束動(dòng)畫值與初始動(dòng)畫值之間的差異,而不是在該To屬性中規(guī)定明確的最終值。
動(dòng)畫類可以包括利用每個(gè)段內(nèi)的不同的定時(shí)參數(shù)的多個(gè)段。KeyValues屬性規(guī)定關(guān)于動(dòng)畫的值的列表。插入法屬性規(guī)定用于在該KeyValues屬性中所規(guī)定的兩個(gè)關(guān)鍵字值之間進(jìn)行插入的方法。插入法的例子包括離散、線性、步距和樣條。KeyTimes屬性指定被用來控制該動(dòng)畫的步距的時(shí)間值列表。該列表包含與該KeyValues列表相同的元素?cái)?shù)量。以增加的時(shí)間值對列表排序,并且,該列表中的第一個(gè)值是0,最后一個(gè)值是1(除非InterpolationMethod被設(shè)置為“離散”,在這種情況下,這最后的值可能小于或等于1)。KeySplines屬性規(guī)定與KeyTimes列表關(guān)聯(lián)的一組貝齊爾曲線控制點(diǎn)。這些貝齊爾曲線控制點(diǎn)定義控制該動(dòng)畫的間隔步距的立方函數(shù)。該列表包含比該KeyTimes列表少一個(gè)的元素。如果該InterpolationMethod性質(zhì)被設(shè)置為“樣條”,則只使用該列表。
動(dòng)畫類結(jié)構(gòu)內(nèi)的這些動(dòng)畫屬性包括某些布爾性質(zhì)。如果該動(dòng)畫對象的時(shí)間線索是活動(dòng)的或在填充時(shí)期內(nèi),則將IsOverridingBaseValue屬性設(shè)置為“真”。另外,IsAccumulating屬性允許重復(fù)的動(dòng)畫序列對元素的屬性產(chǎn)生累積的影響。當(dāng)將該IsAccumulating屬性設(shè)置為“真”時(shí),而不是在重復(fù)的動(dòng)畫序列的每個(gè)迭代上重復(fù)相同的軌跡,動(dòng)畫累積每個(gè)迭代的效果,本質(zhì)上是利用自身來組成并建立于對元素的屬性的先前的動(dòng)畫誘發(fā)的變化。
如果對于(以下聯(lián)合一套方法420所描述的)該動(dòng)畫對象的GetValue的返回值取決于該基本值(被提供給該動(dòng)畫對象),則UsesBaseValue屬性返回“真”。如果該UsesBaseValue屬性返回“假”,那么,該動(dòng)畫對象完全忽略該基本值。如果該動(dòng)畫對象在列表中,則該UsesBaseValue屬性允許優(yōu)化,其中在一些情況下,只需要評估這些動(dòng)畫對象的子集。
該動(dòng)畫類結(jié)構(gòu)也包括一組定時(shí)屬性410。CurrentTime屬性提供關(guān)于該動(dòng)畫對象的、該時(shí)間線索本地的當(dāng)前時(shí)間。ParentTimeline屬性指定時(shí)間線索,該時(shí)間線索是該動(dòng)畫對象的時(shí)間線索的定時(shí)父。該P(yáng)arentTimeLine屬性可以參考任何其他的時(shí)間線索,或者可以參考兩個(gè)特殊引用值之一Timeline.VisualParent或Timeline.RootTimeline。如果該P(yáng)arentTimeline屬性被設(shè)置為Timeline.VisualParent,那么,該時(shí)間線索在使用方面自動(dòng)成為與它被用于其中的該視覺圖象關(guān)聯(lián)的那個(gè)時(shí)間線索的父。如果該視覺圖象沒有關(guān)聯(lián)的DefaultTimeline,那么,用遞歸方式檢查該父視覺圖象。如果該P(yáng)arentTimeline屬性被設(shè)置為Timeline.RootTimeline,那么,這個(gè)時(shí)間線索在使用方面自動(dòng)成為定時(shí)樹228的該“根”的父。
這個(gè)定時(shí)屬性集也包括Begin屬性,該屬性用于指定關(guān)于該特定動(dòng)畫對象的時(shí)間線索應(yīng)該開始的時(shí)間。默認(rèn)的情況是該開始時(shí)間值是相對于父時(shí)間線索的開始時(shí)間,但也潛在地規(guī)定偏移量,從而提供相對于其他某個(gè)時(shí)間線索的開始時(shí)間或結(jié)束時(shí)間的時(shí)間。在后一種情況下,這另一個(gè)時(shí)間線索必須成為與關(guān)于這個(gè)特定動(dòng)畫對象的時(shí)間線索相同的時(shí)間線索的父。動(dòng)畫對象上的Duration屬性指定從始到終單個(gè)周期的持續(xù)時(shí)間。Progress屬性指定該時(shí)間線索的當(dāng)前進(jìn)展值。如果(以下所描述的)IsOverridingBaseValue是假的,那么,該P(yáng)rogress屬性返回0。在所有情況中,該P(yáng)rogress屬性的這個(gè)返回值始終是包括0與1之間的值。
在本發(fā)明的實(shí)施例中,支持對動(dòng)畫的重復(fù)。RepeatCount屬性規(guī)定在這個(gè)動(dòng)畫對象的使用期限期間應(yīng)該重復(fù)從始至終的周期的次數(shù)。該RepeatCount屬性值潛在地是分?jǐn)?shù)值。特殊值float.PositiveInfinity指出該時(shí)間線索應(yīng)該連續(xù)重復(fù)。如果它重復(fù)的話,則CurrentRepeat屬性規(guī)定該時(shí)間線索的當(dāng)前迭代。第一個(gè)迭代是迭代1。如果該IsOverridingBaseValue動(dòng)畫屬性是假的,則該CurrentRepeat屬性返回0。
RepeatDuration屬性規(guī)定應(yīng)該在其內(nèi)重復(fù)從始至終的周期的時(shí)間長度。這會(huì)潛在地導(dǎo)致分?jǐn)?shù)執(zhí)行(重復(fù)計(jì)數(shù))。Time.Indefinite的該RepeatDuration屬性值指出該時(shí)間線索應(yīng)該永遠(yuǎn)重復(fù)。如果該IsOverridingBaseValue屬性是假的,則這個(gè)屬性返回Time.Unspecified。如果為該RepeatCount屬性和該RepeatDuration屬性規(guī)定值,那么,該總活動(dòng)持續(xù)時(shí)間是這兩個(gè)被規(guī)定的屬性的最小值。
關(guān)于這些動(dòng)畫類的這些定時(shí)屬性還包括指定0與1之間的一個(gè)值的加速屬性,該值表示該時(shí)間加速階段中所花費(fèi)的該簡單持續(xù)時(shí)間的分?jǐn)?shù)。減速屬性指定0與1之間的一個(gè)值,表示在該時(shí)間減速階段中所花費(fèi)的該簡單持續(xù)時(shí)間的分?jǐn)?shù)。由于該動(dòng)畫無法同時(shí)加速和減速,因此,該加速屬性值和減速屬性值的和不超過1(該簡單持續(xù)時(shí)間)。
Autoreverse屬性指定該動(dòng)畫是否將從始至終地進(jìn)展,然后返回。如果該Autoreverse屬性具有“真”的值,那么,該時(shí)間線索從始至終地進(jìn)展,然后立即從終至始地向后進(jìn)展。該時(shí)間線索維持活動(dòng)的時(shí)間將是該動(dòng)畫對象的該Duration屬性所規(guī)定的時(shí)間數(shù)量的兩倍。
End屬性所維持的值為關(guān)于該動(dòng)畫對象的時(shí)間線索規(guī)定最長的結(jié)束時(shí)間。如果該End屬性值小于該Begin屬性值和Duration屬性值的和,那么,該激活時(shí)期縮減該End屬性值。此外,忽略越過該End性質(zhì)所規(guī)定的時(shí)間的所有規(guī)定的動(dòng)畫開端(按計(jì)劃的或交互式的)。
EndSync屬性值定義時(shí)間線索的隱含的持續(xù)時(shí)間。如果沒有明確設(shè)置該Duration屬性,則使用該EndSync屬性所規(guī)定的該隱含的持續(xù)時(shí)間。時(shí)間線索的該隱含的持續(xù)時(shí)間可以由它控制的該計(jì)時(shí)對象來定義,或者由可能成為它的父的其他時(shí)間線索來定義。
在該結(jié)束時(shí)間過去之后,F(xiàn)ill屬性規(guī)定該動(dòng)畫對象的這個(gè)時(shí)間線索的行為。默認(rèn)的情況是該時(shí)間線索只是從始至終維護(hù)“運(yùn)行”,但如果該Fill屬性被設(shè)置為“凍結(jié)”,那么,該時(shí)間線索在越過該結(jié)束時(shí)間后仍然維護(hù)運(yùn)行。在那種情況下,該結(jié)束時(shí)間之后的該動(dòng)畫對象的該進(jìn)展值等于它在該結(jié)束時(shí)間的無論什么值。關(guān)于該Fill屬性值的設(shè)置是“移去”(該全局默認(rèn)值)、“凍結(jié)”和“維護(hù)”。FillDefault屬性指定關(guān)于該Fill屬性的默認(rèn)值。如果沒有規(guī)定該Fill屬性值,那么,該DefaultFill屬性的這個(gè)值規(guī)定該填充行為。此外,這個(gè)默認(rèn)值由成為這個(gè)時(shí)間線索的父的時(shí)間線索來繼承,除非它們具有其自己的FillDefault性質(zhì)集。關(guān)于該DefaultFill屬性的這些可能的值等同于關(guān)于該Fill性質(zhì)的值。
當(dāng)達(dá)到第二個(gè)(或以后的)開始時(shí)間時(shí),Restart屬性指定該動(dòng)畫對象的時(shí)間線索的行為。默認(rèn)的情況是開始時(shí)間中斷任何活動(dòng)時(shí)期,并回到關(guān)于該時(shí)間線索的時(shí)間t=0。但是,如果該Restart屬性被設(shè)置為WhenNotActive,那么,忽略將會(huì)中斷活動(dòng)時(shí)期的開始時(shí)間。關(guān)于該Restart屬性的這些可能的值是Always、WhenNotActive和Never。Restart Default屬性為該Resart屬性指定默認(rèn)值。
Speed屬性指定關(guān)于該動(dòng)畫對象的該時(shí)間線索(與其父時(shí)間線索相比較)的、時(shí)間應(yīng)該經(jīng)過的相對速度。例如,1的值意味著正常速度,而2的值則意味著時(shí)間以兩倍快的速度流逝(所以,該察覺到的持續(xù)時(shí)間結(jié)束只是該Duration性質(zhì)所規(guī)定的持續(xù)時(shí)間的一半)。這個(gè)值可能是負(fù)數(shù),在這種情況下,時(shí)間在這個(gè)時(shí)間線索中從結(jié)束時(shí)間到開始時(shí)間向后流逝,好象該父時(shí)間線索被顛倒。
一組布爾屬性被包括在內(nèi),以識(shí)別該動(dòng)畫對象的動(dòng)畫的狀態(tài)。IsForwardProgressing屬性識(shí)別這個(gè)時(shí)間線索中的進(jìn)展是否根據(jù)墻鐘(wall-clock)時(shí)間而從0移到1。該IsForwardProgressing屬性考慮被嵌套在潛在顛倒的時(shí)間線索中的效果。如果IsOverridingBaseValue是假的,那么,IsForwardProgressing所返回的值等同于這個(gè)時(shí)間線索的父時(shí)間線索將會(huì)返回的值。從該時(shí)間線索自己的本地引用幀中可見,IsReversed屬性識(shí)別該時(shí)間線索是否在顛倒周期內(nèi)。與該IsForwardProgressing屬性對比,這個(gè)屬性不考慮被嵌套在潛在顛倒的時(shí)間線索中的效果。如果該IsOverridingBaseValue屬性值是假的,那么,該Is Reversed屬性返回假。
其他屬性涉及該動(dòng)畫的活動(dòng)狀態(tài)的狀態(tài)。IsChanging屬性識(shí)別該動(dòng)畫對象的這個(gè)時(shí)間線索是否是活動(dòng)的。相比之下,如果該時(shí)間線索是活動(dòng)的,則IsPaused屬性返回真,但該動(dòng)畫被暫停。
該動(dòng)畫類也包括一套方法420。特定動(dòng)畫類內(nèi)的一套構(gòu)造器方法創(chuàng)建動(dòng)畫對象,這些動(dòng)畫對象并入特殊動(dòng)畫類類型(例如,浮動(dòng)、布爾值、點(diǎn)等)的特定動(dòng)畫行為。舉例來講,在以下所描述的圖5中,識(shí)別與特定動(dòng)畫行為相對應(yīng)的一套動(dòng)畫構(gòu)造器方法類型。
BeginIn方法將偏移時(shí)間值作為輸入來加以接收。該BeginIn方法將來或過去及時(shí)地在對應(yīng)于該偏移值的某個(gè)點(diǎn)處觸發(fā)交互式開始。該輸入偏移參數(shù)規(guī)定關(guān)于該動(dòng)畫對象的父時(shí)間線索的引用中的時(shí)間。如果該父時(shí)間線索不是活動(dòng)的,則這個(gè)方法沒有效果。
同樣,EndIn方法將另一個(gè)相對時(shí)值作為輸入來加以接收。該EndIn方法將來或過去及時(shí)地在這個(gè)規(guī)定的點(diǎn)處觸發(fā)交互式結(jié)束。該參數(shù)在該動(dòng)畫對象的父時(shí)間線索的該引用幀中。如果該父時(shí)間線索不是活動(dòng)的,則這個(gè)方法沒有效果。
在該動(dòng)畫對象維持活動(dòng)的同時(shí),提供各種方法,以停止/開始該動(dòng)畫對象的進(jìn)展。暫停方法暫停該動(dòng)畫對象的時(shí)間線索以及引用該動(dòng)畫對象的時(shí)間線索的子段。如果這個(gè)時(shí)間線索不是活動(dòng)的,則這個(gè)方法沒有效果。相反,恢復(fù)方法重新開始該動(dòng)畫對象的時(shí)間線索及其所有的子時(shí)間線索。如果這個(gè)時(shí)間線索不是活動(dòng)的并且被暫停,則這個(gè)方法沒有效果。
查找方法允許根據(jù)規(guī)定的偏移值而直接移到動(dòng)畫執(zhí)行序列中的特定點(diǎn)。該查找方法改變潛在地影響其所有子時(shí)間線索的、關(guān)于這個(gè)時(shí)間線索的該當(dāng)前時(shí)間。如果該時(shí)間線索不是活動(dòng)的,則這個(gè)方法沒有效果。
GetUniqueInstance方法將時(shí)間線索作為輸入來加以接收,并且返回可以與其他實(shí)例分開地維護(hù)其自己的運(yùn)行時(shí)間狀態(tài)的動(dòng)畫對象的實(shí)例。如果該動(dòng)畫對象包含自動(dòng)父化的時(shí)間線索,則這個(gè)被返回的實(shí)例具有成為作為參數(shù)而被傳入的該時(shí)間線索的父的那些時(shí)間線索。
GetValue方法將某種類型的基本值作為輸入,并且返回與該輸入基本值相同的類型的另一個(gè)值。該輸出的這個(gè)值既取決于該輸入(基本值),又取決于它被傳遞到那里的該修正器(例如,動(dòng)畫對象/收集)的內(nèi)部狀態(tài)。特別是,這意味著利用相同的輸入來調(diào)用GetValue一次以上并不被保證可返回相同的輸出,實(shí)際上,它預(yù)期在動(dòng)畫序列的過程期間改變。在動(dòng)畫對象類222的情況中,該GetValue方法接收被傳遞的基本值,并且根據(jù)進(jìn)展值的其內(nèi)部修正器定義計(jì)算來返回值。
最后,該動(dòng)畫類結(jié)構(gòu)支持一組事件。只要該動(dòng)畫對象的內(nèi)部狀態(tài)改變,就會(huì)出現(xiàn)Changed事件430。使用Changed事件430標(biāo)記符來指出需要再呈現(xiàn)(在位置或維數(shù)方面已改變了一些東西)。當(dāng)對象進(jìn)入其內(nèi)部狀態(tài)正在不斷變化的周期時(shí),出現(xiàn)Begun事件信號(hào)。只要該對象離開其內(nèi)部狀態(tài)正在不斷變化的周期,就會(huì)出現(xiàn)Ended事件信號(hào)。只要該動(dòng)畫對象的時(shí)間線索重復(fù)其簡單的持續(xù)時(shí)間,就會(huì)出現(xiàn)Repeated事件。只要該時(shí)間方向在該動(dòng)畫對象的時(shí)間線索上變化,就會(huì)出現(xiàn)Reversed事件。響應(yīng)于完成該動(dòng)畫對象的時(shí)間線索上的對應(yīng)的“暫停”、“恢復(fù)”和“查找”方法,會(huì)出現(xiàn)Paused、Resumed和Seeked這些事件。
參考圖5,一組動(dòng)畫對象行為被加以識(shí)別。這些被識(shí)別的行為中的每個(gè)行為對應(yīng)于特定的構(gòu)造器類,在適當(dāng)?shù)臅r(shí)候,該特定的構(gòu)造器類得到以上先前所列出的這些動(dòng)畫類類型中的每種類型的支持。From構(gòu)造器類型500創(chuàng)建動(dòng)畫對象,該動(dòng)畫對象將被傳遞的“From”值作為其初始值,并且進(jìn)展到該關(guān)聯(lián)的屬性上所規(guī)定的基本值。To構(gòu)造器類型510創(chuàng)建動(dòng)畫對象,該動(dòng)畫對象將該關(guān)聯(lián)的屬性上所規(guī)定的并且被改進(jìn)為所傳遞的“To”值的該基本值作為其初始值。From-To構(gòu)造器類型520接收指定關(guān)于該動(dòng)畫對象的該From屬性值和To屬性值的被傳遞的參數(shù)——在該動(dòng)畫制作期間不使用該動(dòng)畫元素的屬性上的該基本值。但是,當(dāng)該動(dòng)畫序列結(jié)束時(shí),除非該動(dòng)畫對象上的Fill定時(shí)屬性是“凍結(jié)”,否則,該元素屬性回復(fù)到該基本值。
可以通過終點(diǎn)和變化(δ)值的數(shù)量來規(guī)定動(dòng)畫值范圍,而不是為動(dòng)畫規(guī)定終點(diǎn)。By構(gòu)造器530接收δ值,在基本值處開始動(dòng)畫,并且繼續(xù)在該動(dòng)畫周期過程期間對該基本值進(jìn)行該δ值所規(guī)定的該數(shù)量的改變。Form-by構(gòu)造器540將開始“From”值作為其輸入來加以接收,并且繼續(xù)在該動(dòng)畫周期期間對該初始“From”值進(jìn)行所傳遞的δ值的改變。已描述了關(guān)于動(dòng)畫對象的構(gòu)造器的基本集合,注意本發(fā)明計(jì)劃了眾多的各種動(dòng)畫行為(和對應(yīng)的構(gòu)造器)——包括這些前述行為的合成物/組合。
已描述了示范的動(dòng)畫類結(jié)構(gòu),現(xiàn)在來注意這些動(dòng)畫對象的容器——?jiǎng)赢嬍占?24。參考圖6,描繪了關(guān)于動(dòng)畫收集類的示范結(jié)構(gòu)。動(dòng)畫收集對象維持從動(dòng)畫類224中被實(shí)例化的動(dòng)畫對象列表。首先求助于這些動(dòng)畫收集類所支持的一套方法600,GetUniqueInstance方法返回具有與所傳遞的時(shí)間線索標(biāo)識(shí)相對應(yīng)的默認(rèn)父時(shí)間線索的動(dòng)畫收集實(shí)例。該動(dòng)畫收集類也支持用于設(shè)置動(dòng)畫收集類上的DefaultParentTimeline屬性的界面。在本發(fā)明的示范實(shí)施例中,屬性系統(tǒng)220調(diào)用該GetUniqueInstance方法來獲得關(guān)于動(dòng)態(tài)動(dòng)畫收集對象的特定動(dòng)畫收集的副本。該動(dòng)畫收集對象包含動(dòng)畫對象列表。構(gòu)造器功能/實(shí)體將動(dòng)畫對象加入這個(gè)所創(chuàng)建的動(dòng)畫收集實(shí)例。通過規(guī)定該列表內(nèi)的特定位置(如同在陣列中),來定位并參考/存取該動(dòng)畫收集內(nèi)的這些動(dòng)畫對象。
GetValue方法將某種類型的基本值作為輸入,并且返回與該輸入基本值相同的類型的另一個(gè)值。該輸出的這個(gè)值既取決于該輸入(基本值),又取決于它被傳遞到那里的該修正器(例如,動(dòng)畫對象/收集)的內(nèi)部狀態(tài)。特別是,這意味著利用相同的輸入來調(diào)用GetValue一次以上并不被保證可返回相同的輸出,并且,實(shí)際上,它預(yù)期在動(dòng)畫序列過程期間改變。在該動(dòng)畫收集類的情況中,該GetValue方法將所傳遞的基本值提供給其收集中的第一個(gè)動(dòng)畫對象。這第一個(gè)動(dòng)畫對象的輸出成為到該動(dòng)畫收集中的下一個(gè)動(dòng)畫對象(如果存在的話)的該輸入基本值。這個(gè)過程進(jìn)行重復(fù),直到該動(dòng)畫收集中的最后一個(gè)動(dòng)畫對象已計(jì)算輸出為止。該GetValue方法返回該動(dòng)畫收集內(nèi)的該動(dòng)畫對象流水線內(nèi)的最后一個(gè)動(dòng)畫對象所提供的該輸出值。
該動(dòng)畫收集類也包括一組屬性610。IsChanging屬性和IsOverridingBaseValue屬性類似于動(dòng)畫對象上的這些被對應(yīng)地加以命名的屬性。但是,在動(dòng)畫收集類的情況中,這些屬性被加以合并,以便如果該動(dòng)畫對象的對應(yīng)屬性中的任何一個(gè)屬性返回“真”,則該動(dòng)畫收集上的該對應(yīng)屬性返回“真”。該動(dòng)畫(陣列)屬性維護(hù)該動(dòng)畫收集內(nèi)的這些動(dòng)畫對象的列表。
該動(dòng)畫收集也支持一組事件620。這些Changed事件結(jié)合并報(bào)告從該動(dòng)畫收集的這些組成的動(dòng)畫對象中被激發(fā)的、以上所描述的這些對應(yīng)的事件。
現(xiàn)在參考圖7,為動(dòng)態(tài)動(dòng)畫收集類226識(shí)別一套方法和屬性。方法集700包括動(dòng)態(tài)動(dòng)畫收集構(gòu)造器方法。該動(dòng)態(tài)動(dòng)畫收集構(gòu)造器方法將元素引用(在元素樹202上)、該元素上的動(dòng)態(tài)屬性和動(dòng)畫收集實(shí)例作為輸入來加以接收,該構(gòu)造器返回動(dòng)態(tài)動(dòng)畫收集對象,該動(dòng)態(tài)動(dòng)畫收集對象作為對這個(gè)所傳遞的動(dòng)畫收集對象內(nèi)的動(dòng)畫對象進(jìn)行的這些時(shí)間線索誘導(dǎo)變化與元素樹202中所包含的該元素上的該動(dòng)態(tài)屬性之間的界面而工作。
該動(dòng)態(tài)動(dòng)畫收集對象上的界面支持設(shè)置/獲得與該動(dòng)態(tài)動(dòng)畫收集對象關(guān)聯(lián)的該動(dòng)畫收集對象。如果該動(dòng)態(tài)動(dòng)畫收集對象所屬的該元素被重新定位在元素樹202中,或者改變關(guān)于該元素的定時(shí),那么,SetDefaultParentTimeline方法修改時(shí)間線索連接。
GetValue方法返回關(guān)于該元素的動(dòng)畫屬性的該當(dāng)前值(由該動(dòng)態(tài)動(dòng)畫收集所屬的該動(dòng)畫收集來提供)。
當(dāng)該動(dòng)畫收集內(nèi)的任何動(dòng)畫對象的進(jìn)展已改變時(shí),調(diào)用OnChanged方法。當(dāng)被調(diào)用時(shí),該OnChanged方法引起該動(dòng)態(tài)屬性的無效。這又調(diào)用了受到影響的元素的再呈現(xiàn)。
參考屬性710,OriginalDynamicProperty屬性將參考返回給與該動(dòng)態(tài)動(dòng)畫收集關(guān)聯(lián)的該動(dòng)態(tài)屬性。Element屬性返回與該動(dòng)態(tài)動(dòng)畫收集關(guān)聯(lián)的該元素。該IsOveridingBaseValue將基于調(diào)用的值返回給與它關(guān)聯(lián)的該動(dòng)畫收集上的這個(gè)被對應(yīng)地加以命名的屬性。
已描述了動(dòng)畫結(jié)構(gòu),通過為元素上的屬性提供時(shí)變值,可以使用所描述的該結(jié)構(gòu)來為它們制作動(dòng)畫,這一點(diǎn)通過舉例來加以描述。一般而言,每個(gè)動(dòng)畫資源、方法或?qū)ο蟀ㄒ粋€(gè)界面,該界面允許通知該實(shí)體的動(dòng)畫制作能力、其默認(rèn)父時(shí)間線索、它是否已改變、該對象的當(dāng)前值,以及該實(shí)體是否正在變化。特殊舉例來講,可制作動(dòng)畫的實(shí)體的該界面包括DoesChange屬性,如果該對象可能隨時(shí)間而改變,則該屬性返回“真”。一般而言,如果該對象正在保持任何動(dòng)畫收集,則該DoesChange屬性是真的。DefaultParentTimeline屬性將引用返回給時(shí)間線索,該時(shí)間線索是任何自動(dòng)父化的時(shí)間線索的父。如果設(shè)置該DefaultParentTimeline屬性,那么,任何自動(dòng)父化的時(shí)間線索重新成為父,但不為這些時(shí)間線索或這個(gè)可制作動(dòng)畫的對象創(chuàng)建新的克隆。如果可制作動(dòng)畫的對象中的這些動(dòng)畫正在變化,則IsChanging屬性返回“真”。如果這個(gè)可制作動(dòng)畫的對象的任何時(shí)間線索是活動(dòng)的或在填充時(shí)期內(nèi),則IsOverridingBaseValue屬性返回“真”。只要這個(gè)可制作動(dòng)畫的實(shí)體的值改變,就會(huì)出現(xiàn)Changed事件。
此外,這個(gè)可制作動(dòng)畫的實(shí)體包括CurrentValue方法,該方法返回被用作該屬性的這個(gè)值的對象。這個(gè)值是該對象的瞬時(shí)值,但它一旦被設(shè)置,就不會(huì)改變。規(guī)定特定時(shí)間線索的GetUniqueInstance方法返回可以被用作屬性的這個(gè)值的對象。如果該對象提到任何自動(dòng)父化的時(shí)間線索,則被返回的該實(shí)例具有成為這個(gè)規(guī)定的默認(rèn)父時(shí)間線索的父的那些時(shí)間線索。
可制作動(dòng)畫的實(shí)體也為每個(gè)可制作動(dòng)畫的屬性規(guī)定對動(dòng)畫收集類型的對應(yīng)的引用,以促進(jìn)該屬性系統(tǒng)創(chuàng)建動(dòng)態(tài)動(dòng)畫收集。在本發(fā)明的實(shí)施例中,使用動(dòng)畫收集,而不使用基本動(dòng)畫對象,因?yàn)檫@種用法將會(huì)排除動(dòng)畫合成。
通過將動(dòng)畫收集加入單獨(dú)的屬性,來為資源制作動(dòng)畫。以下的例子表現(xiàn)了如何利用動(dòng)畫顏色來創(chuàng)建SolidColorBrush。
動(dòng)畫資源可以被用于呈現(xiàn)操作中,也可以被用作關(guān)于元素屬性的值。舉例來講,通過將動(dòng)畫收集加入繪圖上下文方法調(diào)用,或者通過使用動(dòng)畫資源,來為呈現(xiàn)操作制作動(dòng)畫。以下的例子表現(xiàn)了如何將動(dòng)畫不透明度值推入繪圖上下文。
通過將動(dòng)畫收集加入Element屬性,可以為元素制作動(dòng)畫。以下的例子表現(xiàn)了如何以C charp為按鈕的寬度制作動(dòng)畫。
以下示出XAML中的相同的例子。
只要使用動(dòng)畫(或動(dòng)畫資源),該動(dòng)畫(或資源)就被加以克隆,以便為該目的地提供唯一的、可獨(dú)立控制的時(shí)間線索。對屬性執(zhí)行動(dòng)畫制作的這種特定的方法的結(jié)果是該原始動(dòng)畫從來不是視覺場景的一部分,所以,它不會(huì)作出響應(yīng),以通過動(dòng)畫對象的定時(shí)界面來控制調(diào)用。為了實(shí)現(xiàn)這個(gè)效果,該調(diào)用代碼必須首先使用動(dòng)畫,然后讀回該動(dòng)畫。被讀回的該值隨后可以被高速緩存,并被用于定時(shí)控制。以下的例子示出想要控制動(dòng)畫的那個(gè)代碼所遵循的樣式
精通該技術(shù)領(lǐng)域的人將會(huì)理解已描述了新的示范平臺(tái)以及被并入其中的示范的界面、類和結(jié)構(gòu),用于在包括圖形輸出設(shè)備(例如,圖形用戶界面顯示器)的計(jì)算環(huán)境內(nèi),附上并執(zhí)行對圖形顯示元素的動(dòng)畫行為。鑒于可以應(yīng)用本發(fā)明的這些原理的這許多可能的環(huán)境以及設(shè)計(jì)和執(zhí)行上述動(dòng)畫結(jié)構(gòu)的靈活性,應(yīng)該認(rèn)識(shí)到這里所描述的這些實(shí)施例意在起說明的作用,而不應(yīng)該被視作限制本發(fā)明的范圍。精通應(yīng)用本發(fā)明的技術(shù)領(lǐng)域的人將會(huì)理解在不脫離本發(fā)明的精神的前提下,可以在布置和細(xì)節(jié)方面修改這些說明性實(shí)施例。所以,如這里所描述的本發(fā)明計(jì)劃可以將所有這類實(shí)施例納入以下的權(quán)利要求書及其相等物的范圍以內(nèi)。
權(quán)利要求
1.一種支持元素屬性值的定時(shí)修改的圖形顯示動(dòng)畫制作系統(tǒng),該圖形顯示動(dòng)畫制作系統(tǒng)的特征在于包括-顯示結(jié)構(gòu),用于維護(hù)一組元素,其中,元素包括影響該元素的顯示特征的可變屬性值;-屬性系統(tǒng),用于維護(hù)與由該顯示結(jié)構(gòu)所維持的元素關(guān)聯(lián)的屬性,包括能夠隨時(shí)間的推移而改變的動(dòng)態(tài)屬性;以及,一些動(dòng)畫類,動(dòng)畫對象從中被加以實(shí)例,其中,這些動(dòng)畫對象實(shí)例提供影響被分配給這些動(dòng)態(tài)屬性的值的時(shí)變值。
2.權(quán)利要求1的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于進(jìn)一步包括-動(dòng)態(tài)動(dòng)畫類,它使一個(gè)或多個(gè)動(dòng)畫對象與該顯示結(jié)構(gòu)內(nèi)的元素的動(dòng)態(tài)屬性相關(guān)聯(lián)。
3.權(quán)利要求1的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于進(jìn)一步包括-動(dòng)畫收集類,用于為一組動(dòng)畫類對象分組,其中,該動(dòng)畫收集類的實(shí)例通過將這個(gè)動(dòng)畫類對象集應(yīng)用于基本值,來提供組成的輸出值。
4.權(quán)利要求1的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類每個(gè)都規(guī)定內(nèi)部時(shí)間線索。
5.權(quán)利要求4的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,動(dòng)畫對象實(shí)例附屬于父時(shí)間線索,該父時(shí)間線索提供關(guān)于該內(nèi)部時(shí)間線索所定義的定時(shí)序列的上下文。
6.權(quán)利要求5的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,該父時(shí)間線索由關(guān)于這些動(dòng)畫對象實(shí)例的容器來加以規(guī)定。
7.權(quán)利要求1的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類中的一些動(dòng)畫類都與它們?yōu)槠涑尸F(xiàn)時(shí)間可變值的特定數(shù)據(jù)類型有關(guān)聯(lián)。
8.權(quán)利要求7的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供浮點(diǎn)值。
9.權(quán)利要求7的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供關(guān)于提出框的維數(shù)。
10.權(quán)利要求7的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供矩形的左上部的位置。
11.權(quán)利要求7的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供時(shí)變彩色值。
12.權(quán)利要求7的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供布爾值。
13.一種用于為圖形顯示系統(tǒng)中的顯示元素制作動(dòng)畫的方法,該圖形顯示系統(tǒng)包括用于維護(hù)由執(zhí)行程序生成的一組運(yùn)行時(shí)間顯示元素的顯示結(jié)構(gòu)以及用于管理與這些顯示元素關(guān)聯(lián)的屬性的屬性系統(tǒng),并且,其中,通過響應(yīng)于時(shí)間的流逝來修改顯示元素屬性值,可以實(shí)現(xiàn)為這些顯示元素中的任何顯示元素制作動(dòng)畫,該方法的特征在于包括創(chuàng)建包括可修改的屬性的圖形顯示元素;定義可分配給這個(gè)可修改的屬性的動(dòng)畫行為;根據(jù)來自運(yùn)行時(shí)間的程序的請求,來使該動(dòng)畫行為與該元素的這個(gè)可修改的屬性相關(guān)聯(lián);以及,根據(jù)該動(dòng)畫行為,來將一連串時(shí)變值提供給這個(gè)可修改的屬性。
14.權(quán)利要求13的方法,其特征在于進(jìn)一步包括提供一組動(dòng)畫類,其中,每個(gè)動(dòng)畫類定義動(dòng)畫行為。
15.權(quán)利要求13的方法,其特征在于其中,這個(gè)動(dòng)畫類的集合規(guī)定動(dòng)畫類型,其中,一個(gè)動(dòng)畫類型對應(yīng)于由一種動(dòng)畫類的一些實(shí)例來處理的一種類型的數(shù)據(jù)。
16.權(quán)利要求13的方法,其特征在于其中,從具體表現(xiàn)該動(dòng)畫行為的動(dòng)畫類中被實(shí)例化的動(dòng)畫對象促進(jìn)了該提供步驟。
17.權(quán)利要求13的方法,其特征在于其中,這個(gè)定義動(dòng)畫行為的步驟包括為動(dòng)畫收集類內(nèi)的一動(dòng)畫類實(shí)例的集合分組,其中,該動(dòng)畫收集類的一個(gè)實(shí)例通過將這個(gè)動(dòng)畫類實(shí)例集合應(yīng)用于一基本值,來提供組成的輸出值。
18.權(quán)利要求13的方法,其特征在于其中,該關(guān)聯(lián)步驟包括實(shí)例化動(dòng)態(tài)動(dòng)畫類,該動(dòng)態(tài)動(dòng)畫類將一個(gè)或多個(gè)動(dòng)畫對象附屬于該元素上的這個(gè)可修改的屬性。
19.權(quán)利要求13的方法,其特征在于其中,根據(jù)與定義該動(dòng)畫行為的一個(gè)或多個(gè)動(dòng)畫對象關(guān)聯(lián)的定時(shí)樹節(jié)點(diǎn),來規(guī)定關(guān)于該時(shí)變值序列的進(jìn)展的定時(shí)。
20.權(quán)利要求13的方法,其特征在于進(jìn)一步包括使父時(shí)間線索附屬于動(dòng)畫對象,從而提供關(guān)于內(nèi)部時(shí)間線索所定義的局部定時(shí)序列的全局定時(shí)上下文。
21.權(quán)利要求20的方法,其特征在于其中,該動(dòng)畫對象的該父時(shí)間線索由關(guān)于動(dòng)畫對象實(shí)例的一個(gè)收集的容器來規(guī)定。
22.權(quán)利要求13的方法,其特征在于其中,這個(gè)提供一連串時(shí)變值的步驟包括在活動(dòng)動(dòng)畫周期內(nèi),多次將當(dāng)前時(shí)間和基本屬性值應(yīng)用于具體表現(xiàn)該動(dòng)畫行為的動(dòng)畫值發(fā)生器,以便呈現(xiàn)關(guān)于這個(gè)可修改的屬性的當(dāng)前值;以及根據(jù)關(guān)于這個(gè)可修改的屬性的該當(dāng)前值,來生成更新的布局。
23.一種方法,用于將動(dòng)畫行為應(yīng)用于屬性系統(tǒng)所維護(hù)的元素屬性,以便在這段時(shí)間內(nèi)執(zhí)行對該元素屬性值的順序修改,所述方法的特征在于包括從規(guī)定基本動(dòng)畫行為的動(dòng)畫對象類中實(shí)例化動(dòng)畫對象實(shí)例;從規(guī)定組成的動(dòng)畫對象列表的動(dòng)畫收集類中實(shí)例化動(dòng)畫收集對象;以及從動(dòng)畫收集類中實(shí)例化動(dòng)態(tài)動(dòng)畫收集,該動(dòng)畫收集類使該動(dòng)畫收集對象與該屬性系統(tǒng)所維護(hù)的該元素屬性相關(guān)聯(lián)。
24.權(quán)利要求23的方法,其特征在于進(jìn)一步包括將父時(shí)間線索分配給這些動(dòng)畫對象類的實(shí)例。
25.權(quán)利要求23的方法,其特征在于進(jìn)一步包括鎖定動(dòng)畫對象實(shí)例的這些屬性。
26.權(quán)利要求23的方法,其特征在于進(jìn)一步包括鎖定動(dòng)畫收集對象實(shí)例的這些屬性。
27.權(quán)利要求23的方法,其特征在于進(jìn)一步包括將當(dāng)前時(shí)間和基本屬性值應(yīng)用于該動(dòng)畫收集對象的這些組成的動(dòng)畫對象,以便呈現(xiàn)關(guān)于該元素屬性的當(dāng)前屬性值;以及,根據(jù)關(guān)于該元素屬性的該當(dāng)前屬性值,來生成更新的布局。
28.一種包括計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),這些計(jì)算機(jī)可執(zhí)行指令用于提供支持元素屬性值的定時(shí)的修改的圖形顯示動(dòng)畫制作系統(tǒng),其特征在于該圖形顯示動(dòng)畫制作系統(tǒng)包括-顯示結(jié)構(gòu),用于維護(hù)一組元素,其中,元素包括影響該元素的顯示特征的一可變屬性值;-屬性系統(tǒng),用于維護(hù)與該顯示結(jié)構(gòu)所維護(hù)的元素關(guān)聯(lián)的屬性,包括能夠隨時(shí)間的推移而改變的一些動(dòng)態(tài)屬性;以及,一些動(dòng)畫類,動(dòng)畫對象從中被加以實(shí)例化,其中,這些動(dòng)畫對象實(shí)例提供影響被分配給這些動(dòng)態(tài)屬性的值的時(shí)變值。
29.權(quán)利要求28的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,該圖形顯示動(dòng)畫制作系統(tǒng)進(jìn)一步包括動(dòng)態(tài)動(dòng)畫類,它使一個(gè)或多個(gè)動(dòng)畫對象與該顯示結(jié)構(gòu)內(nèi)的元素的動(dòng)態(tài)屬性相關(guān)聯(lián)。
30.權(quán)利要求28的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,該圖形顯示動(dòng)畫制作系統(tǒng)進(jìn)一步包括-動(dòng)畫收集類,用于為一動(dòng)畫類對象的集合分組,其中,該動(dòng)畫收集類的實(shí)例通過將這個(gè)動(dòng)畫類對象集合應(yīng)用于基本值,來提供一組成的輸出值。
31.權(quán)利要求28的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類的每個(gè)都規(guī)定一內(nèi)部時(shí)間線索。
32.權(quán)利要求31的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,動(dòng)畫對象實(shí)例附屬于父時(shí)間線索,該父時(shí)間線索提供關(guān)于該內(nèi)部時(shí)間線索所定義的定時(shí)序列的上下文。
33.權(quán)利要求32的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,該父時(shí)間線索由關(guān)于這些動(dòng)畫對象實(shí)例的容器來加以規(guī)定。
34.權(quán)利要求28的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類中的任何動(dòng)畫類都與它們?yōu)槠涑尸F(xiàn)時(shí)間可變值的特定數(shù)據(jù)類型相關(guān)聯(lián)。
35.權(quán)利要求34的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供浮點(diǎn)值。
36.權(quán)利要求34的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供關(guān)于提出框的維數(shù)。
37.權(quán)利要求34的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供矩形的左上部的位置。
38.權(quán)利要求34的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供時(shí)變彩色值。
39.權(quán)利要求34的計(jì)算機(jī)可讀介質(zhì),其特征在于其中,這些動(dòng)畫類中的一個(gè)動(dòng)畫類提供布爾值。
全文摘要
揭示了一種圖形顯示動(dòng)畫制作系統(tǒng),該系統(tǒng)支持圖形顯示內(nèi)的元素的元素屬性值的定時(shí)的修改。該動(dòng)畫制作系統(tǒng)利用顯示結(jié)構(gòu),該顯示結(jié)構(gòu)用于維護(hù)與用圖表表示的顯示場景內(nèi)的顯示對象相對應(yīng)的一組元素。這些元素包括可變屬性值。該動(dòng)畫制作系統(tǒng)也利用屬性系統(tǒng),該屬性系統(tǒng)維護(hù)與該顯示結(jié)構(gòu)所維護(hù)的元素關(guān)聯(lián)的屬性。這些屬性包括能夠隨時(shí)間的推移而改變的動(dòng)態(tài)屬性——因而會(huì)影響圖形顯示上的這個(gè)對應(yīng)的元素的外觀。該動(dòng)畫制作系統(tǒng)包括一些動(dòng)畫類,動(dòng)畫對象從這些動(dòng)畫類中被加以實(shí)例化并且與運(yùn)行時(shí)間的元素屬性相關(guān)聯(lián)。這些動(dòng)畫對象實(shí)例提供時(shí)變值,這些時(shí)變值會(huì)影響被分配給該屬性系統(tǒng)所維護(hù)的這些動(dòng)態(tài)屬性的值。
文檔編號(hào)G06T15/70GK1689046SQ03801872
公開日2005年10月26日 申請日期2003年5月15日 優(yōu)先權(quán)日2003年5月9日
發(fā)明者M·卡爾金斯, J·S·比答三世, K·加羅, G·K·翁, L·E·布蘭克 申請人:微軟公司