專利名稱:更新動畫的方法和裝置的制作方法
技術領域:
本發(fā)明涉及動畫領域,特別涉及一種更新動畫的方法和裝置。
背景技術:
隨著即時通訊工具的廣泛使用,用戶越來越注重其人性化和個性化效果。目前,換膚、更換背景圖片以及動畫等功能極大的提高了即時通訊工具的人性化和個性化效果。上述更新背景圖片的功能是對靜態(tài)對象的更新,實現(xiàn)起來較簡單。隨著用戶對即時通訊工具人性化和個性化要求的提高,用戶希望在某些場景下,動畫也是能夠更新的。例如,在某一種皮膚下,選中按鈕的動畫效果為綠色變到淺綠色,在另一種皮膚下,選中按鈕的動畫效果為棕色變到白色,也即在換膚時,選中按鈕時播放的“顏色改變動畫”也是需要更新的。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術至少存在以下問題目前在很多情況下,例如在 XAML(Extensible Application Markup Language,可擴展應用程序標記語言)中,動畫是作為資源文件存在的。仍以上述“顏色改變動畫”為例, 資源文件存儲著該動畫的關鍵幀及其對應的顏色值。然而資源文件在程序運行時是不允許修改的,這就造成了動畫更新的瓶頸,影響用戶體驗。
發(fā)明內容
為了在程序運行時更新動畫,本發(fā)明實施例提供了一種更新動畫的方法和裝置。 所述技術方案如下一種更新動畫的方法,所述方法包括創(chuàng)建動畫的關鍵幀對象對應的擴展對象,所述擴展對象至少包括索引屬性,所述索引屬性用于存儲索引值;加載欲更新的資源文件,所述欲更新的資源文件包括索引值及其對應的特征值;根據(jù)所述擴展對象的索引屬性存儲的索引值,從所述欲更新的資源文件獲取對應的特征值;將所述關鍵幀對象的特征值更新為獲取到的特征值。其中,所述根據(jù)所述擴展對象的索引屬性存儲的索引值,從所述欲更新的資源文件獲取對應的特征值包括在所述欲更新的資源文件中,查找與所述擴展對象的索引屬性存儲的索引值相同的索引值;獲取所述相同的索引值對應的特征值。其中,所述加載欲更新的資源文件之前還包括卸載更新前的原資源文件。其中,所述擴展對象還包括地址屬性,用于存儲所述關鍵幀對象的地址,所述將所述關鍵幀對象的特征值更新為獲取到的特征值包括
獲取所述關鍵幀對象的地址,并記錄在所述擴展對象的地址屬性;將所述地址屬性存儲的地址對應的關鍵幀對象更新為獲取到的特征值。其中,所述擴展對象還包括模塊屬性,用于存儲所述動畫應用的功能模塊,所述將所述關鍵幀對象的特征值更新為獲取到的特征值包括當所述功能模塊對應的關鍵幀對象需要更新時,將所述關鍵幀對象的特征值更新為獲取到的特征值。其中,所述擴展對象還包括特征屬性,用于存儲初始特征值,所述方法還包括當從所述欲更新的資源文件獲取不到對應的特征值時,將所述關鍵幀對象的特征值更新為所述特征屬性存儲的初始特征值。一種更新動畫的裝置,其特征在于,所述裝置包括創(chuàng)建模塊,用于創(chuàng)建動畫的關鍵幀對象對應的擴展對象,所述擴展對象至少包括索引屬性,所述索引屬性用于存儲索引值;加載模塊,用于加載欲更新的資源文件,所述欲更新的資源文件包括索引值及其對應的特征值;獲取模塊,用于根據(jù)所述創(chuàng)建模塊創(chuàng)建的擴展對象的索引屬性存儲的索引值,從所述加載模塊加載的欲更新的資源文件獲取對應的特征值;更新模塊,用于所述關鍵幀對象的特征值更新為所述獲取模塊獲取到的特征值。其中,所述獲取模塊包括查找單元,用于在所述欲更新的資源文件中,查找與所述擴展對象的索引屬性存儲的索引值相同的索引值;獲取單元,用于獲取所述查找單元查找到的相同的索引值對應的特征值。其中,所述裝置還包括卸載模塊,用于加載欲更新的資源文件之前,卸載更新前的原資源文件。其中,所述創(chuàng)建模塊創(chuàng)建的擴展對象還包括地址屬性,用于存儲所述關鍵幀對象的地址,所述更新模塊,具體用于獲取所述關鍵幀對象的地址,并記錄在所述擴展對象的地址屬性,將所述地址屬性存儲的地址對應的關鍵幀對象的特征值更新為獲取到的特征值。其中,所述創(chuàng)建模塊創(chuàng)建的擴展對象還包括模塊屬性,用于存儲所述動畫應用的功能模塊,所述更新模塊,具體用于當所述功能模塊對應的關鍵幀對象需要更新時,將所述關鍵幀對象的特征值更新為獲取到的特征值。其中,所述創(chuàng)建模塊創(chuàng)建的擴展對象還包括特征屬性,用于存儲初始特征值,所述更新模塊還用于當從所述加載模塊加載的欲更新的資源文件獲取不到對應的特征值時,將所述關鍵幀對象的特征值更新為所述特征屬性存儲的初始特征值。本發(fā)明實施例提供的技術方案帶來的有益效果是通過創(chuàng)建動畫的關鍵幀對象對應的擴展對象,并通過擴展對象中存儲有索引值的索引屬性以及靜態(tài)的包含特征值和索引值的資源文件,對動畫的特征屬性進行更新,實現(xiàn)
5了在程序運行時也能夠更新動畫,提高了用戶體驗,增強了軟件的人性化和個性化效果。并且,本實施例提供的方法簡化了新皮膚的制作過程,并且換膚過程中計算機開銷小,速度快。在換膚后,不僅界面的靜態(tài)效果改變,動態(tài)效果也隨之改變,極大地滿足用戶的個性化需求,提高了軟件的易用性。
圖1是本發(fā)明實施例1中提供的更新動畫的方法流程圖;圖2是本發(fā)明實施例1中提供的更新動畫的另一方法流程圖;圖3是本發(fā)明實施例2中提供的更新動畫的裝置結構示意圖;圖4是本發(fā)明實施例2中提供的更新動畫的裝置另一結構示意圖。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。實施例1參見圖1,本實施例提供了一種更新動畫的方法,包括101 創(chuàng)建動畫的關鍵幀對象對應的擴展對象,擴展對象至少包括索引屬性,用于存儲索引值;其中,擴展對象還可以包括地址屬性、特征屬性和模塊屬性中的至少一個.地址屬性用于存儲關鍵幀對象的地址。特征屬性用于存儲初始特征值,包括顏色和聲音等,本實施例并不限定。模塊屬性用于存儲該動畫應用的功能模塊,便于功能擴展和換膚管理,例如,一個程序包含多個功能模塊,假設每個模塊都能單獨換膚,此時根據(jù)模塊屬性判斷是否需要更新關鍵幀對象。102 加載欲更新的資源文件,欲更新的資源文件包括索引值及其對應的特征值;進一步的,加載之前還需要卸載更新前的原資源文件。103:根據(jù)擴展對象的索引屬性存儲的索引值,從欲更新的資源文件獲取對應的特征值;具體的,在欲更新的資源文件中,查找與索引屬性存儲的索引值相同的索引值,獲取相同的索引值對應的特征值。104 將關鍵幀對象的特征值更新為獲取到的特征值。a、當擴展對象包括地址屬性時,更新關鍵幀對象包括獲取關鍵幀對象的地址,并記錄在擴展對象的地址屬性;將地址屬性存儲的地址對應的關鍵幀對象的特征值更新為獲取到的特征值。b、當擴展對象包括模塊屬性時,更新關鍵幀對象包括當功能模塊對應的關鍵幀對象需要更新時,再將關鍵幀對象的特征值更新為獲取到的特征值。C、當擴展對象包括特征屬性時,且當從欲更新的資源文件獲取不到對應的特征值時,將關鍵幀對象的特征值更新為特征屬性存儲的初始特征值。本實施例提供的方法,通過創(chuàng)建動畫的關鍵幀對象對應的擴展對象,并通過擴展對象中存儲有索引值的索引屬性以及靜態(tài)的包含特征值和索引值的資源文件,對動畫的特征屬性進行更新,實現(xiàn)了在程序運行時也能夠更新動畫,提高了用戶體驗,增強了軟件的人性化和個性化效果。并且,本實施例提供的方法簡化了新皮膚的制作過程,并且換膚過程中計算機開銷小,速度快。在換膚后,不僅界面的靜態(tài)效果改變,動態(tài)效果也隨之改變,極大地滿足用戶的個性化需求,提高了軟件的易用性。本實施例提供的方法,尤其適用于IMdnstant Messaging,即時通訊)領域。參見圖2,下面結合“顏色改變動畫”的具體實例,介紹換膚時更新該動畫的過程。201 創(chuàng)建“顏色改變動畫”的關鍵幀對象對應的擴展對象,該擴展對象至少包括索引屬性,用于存儲索引值;其中,擴展對象還可以包括地址屬性、模塊屬性和顏色屬性中的至少一個。地址屬性用于存儲關鍵幀對象的地址。顏色屬性是特征屬性的一種,用于存儲初始顏色值,也即默認的顏色值,以便于在從資源文件獲取顏色值失敗后,可以返回默認的顏色值。模塊屬性用于存儲該動畫應用的功能模塊,便于功能擴展和換膚管理,例如,一個程序包含多個功能模塊,假設每個模塊都能單獨換膚,此時根據(jù)模塊屬性判斷是否需要更新關鍵幀對象。下面XAML程序為關鍵幀對象及其擴展對象,具體如下<CoIorAnimationUsingKeyFrames BeginTime =“ 00:00:00"Storyboard. TargetName = “ ellipse“Storyboard. TargetProperty = “ (Shape. Fill). (SolidColorBrush. Color)“ ><SplineColorKeyFrame KeyTime =” 00:00:00"Value =“ {wpfDynamicColorExtensionResourceName =好友管理-好友分組-氣泡-靜態(tài)底色,DefaultColor = #BF5C966D,Module = BuddyZone} ‘‘ /><SplineColorKeyFrame KeyTime=" 00:00:00. 2000000"Value = " {wpf:DynamicColorExtensionResourceName =好友管理-好友分組-氣泡-選中底色,DefaultColor = #BF82AD5A,Module = BuddyZone} ‘‘ />
</CoIorAnimationUsingKeyFrames)其中,關鍵幀SplineColorKeyFrame包括兩個關鍵幀對象,一個是KeyTime
="00:00:00〃,另一個是 KeyTime = 〃 00:00:00. 2000000 “ ;DynamicColorExtension 為擴展對象,派生自System. Windows. Markup. MarkupExtension ;與關鍵幀對象相對應, 上述程序定義了兩個擴展對象,其中一個擴展對象的索引屬性的索引值ResourceName = 好友管理-好友分組-氣泡-靜態(tài)底色,顏色屬性DefaultColor = #BF5C966D,模塊屬性Module = BuddyZone ;另一個擴展對象的索引屬性的索引值ResourceName =好友管理-好友分組-氣泡-選中底色,顏色屬性DefaultColor = #BF82AD5A,模塊屬性Module = BuddyZone0如上述程序所示,擴展對象可以用{類名屬性1 =值,屬性2 =值,···}的格式在XAML語言中描述。
202 可選的,獲取關鍵幀對象的地址,并記錄在相應擴展對象的地址屬性;其中,地址屬性ColorFrame是在程序運行時動態(tài)記錄的,通過擴展對象中的 ProvideValue方法實現(xiàn)本步驟的代碼如下public override object ProvideValue (IServiceProvider serviceProvider){ColorFrame = service. TargetObject as ColorKeyFrame -J/ 獲得并在 ColorFrame記錄關鍵幀對象的地址} 另外,在具體程序實現(xiàn)時,為了便于查找和調用相應的擴展對象,可在一個全局的集合中預先定義所有的擴展對象DynamicColorExtension,具體程序如下public static List<DynamicCoIorExtension>Collection -J/ 定義一個全局的
皇A
朱口static DynamicColorExtension(){Collection = new List<DynamicColorExtension>();}public DynamicColorExtension(){Collection. Add (this) -J/ 將 DynamicColorExtension 對象添力口至Ij集合}203:卸載原資源文件,加載欲更新的資源文件,資源文件包括索引值及其對應的
顏色值; 其中,原資源文件和欲更新的資源文件相比,區(qū)別在于具體的顏色值不同。因此, 只需要替換不同的顏色值就可以得到一套新皮膚的配色方案,大大減少了設計人員的工作量。例如,原資源文件(綠色主題)的具體代碼如下〈ResourceDi ctionaryxmlns = ” http//schemas. microsoft, com/winfx/2006/χami/presentation”xmlns:χ = ” http://schemas. microsoft, com/winfx/2006/xaml“ >〈Color xiKey="好友管理-好友分組-氣泡-靜態(tài)底色“ >#BF 5C966D</Color>〈Color xiKey="好友管理-好友分組-氣泡-選中后底色“ >#BF82AD5A</Color>〈/ResourceDictionary>欲更新的資源文件(棕色主題)的具體代碼如下<ResourceDictionaryxmlns =” http//schemas. microsoft, com/winfx/2006/χami/presentation”xmlns:χ = ” http://schemas. microsoft, com/winfx/2006/xaml“ >〈Color x:Key = 〃好友管理-好友分組-氣泡-靜態(tài)底色〃 >BroWn〈/Color>〈Color χ:Key =丨‘好友管理-好友分組-氣泡-選中后底色">ffhite</Color></ResourceDictionary>204:根據(jù)擴展對象的索引屬性存儲的索引值,從欲更新的資源文件獲取對應的顏色值;具體的,在欲更新的資源文件中查找與索引屬性存儲的索引值ResourceName 相同的索引值x:Key,獲取該相同的索引值對應的特征值。例如,索引屬性的索引值 ResourceName =好友管理-好友分組-氣泡-靜態(tài)底色,在欲更新的資源文件中,查找到與之相同的索引值X:Key =“好友管理-好友分組-氣泡-靜態(tài)底色,并獲得其相應的顏色值為Brown 205 將關鍵幀對象的特征值更新為獲取到的顏色值。其中,更新的代碼具體如下public void Refresh(){Co lor c = (Color)Application. Current. FindResource (this. ResourceName);ColorFrame. Value = c ;}具體的,當擴展對象包括地址屬性時,獲取關鍵幀對象的地址,并記錄在擴展對象的地址屬性,將地址屬性存儲的地址對應的關鍵幀對象的顏色值更新為獲取到的顏色值。進一步的,當擴展對象包括模塊屬性時,判斷其存儲的功能模塊對應關鍵幀對象是否需要更新,當該功能模塊對應的關鍵幀對象需要更新時,再將該關鍵幀對象的顏色值更新為獲取到的顏色值。進一步的,當擴展對象包括顏色屬性時,如果步驟204從欲更新的資源文件獲取不到對應的特征值時,將關鍵幀對象的顏色值更新為顏色屬性存儲的初始顏色值。至此,程序在進行換膚后更新了內存中“顏色改變動畫”的所有顏色關鍵幀,用戶進行操作時就會播放新的“顏色改變動畫”。本實施例提供的方法,通過創(chuàng)建動畫的關鍵幀對象對應的擴展對象,并通過擴展對象中存儲有索引值的索引屬性以及靜態(tài)的包含特征值和索引值的資源文件,對動畫的特征屬性進行更新,實現(xiàn)了在程序運行時也能夠更新動畫,提高了用戶體驗,增強了軟件的人性化和個性化效果。并且,本實施例提供的方法簡化了新皮膚的制作過程,并且換膚過程中計算機開銷小,速度快。在換膚后,不僅界面的靜態(tài)效果改變,動態(tài)效果也隨之改變,極大地滿足用戶的個性化需求,提高了軟件的易用性。實施例2參見圖3,本實施例提供了一種更新動畫的裝置,包括創(chuàng)建模塊301,用于創(chuàng)建動畫的關鍵幀對象對應的擴展對象,擴展對象至少包括索引屬性,用于存儲索引值;加載模塊302,用于加載欲更新的資源文件,欲更新的資源文件包括索引值及其對應的特征值;獲取模塊303,用于根據(jù)創(chuàng)建模塊301創(chuàng)建的擴展對象的索引屬性存儲的索引值, 從加載模塊302加載的欲更新的資源文件獲取對應的特征值;更新模塊304,用于將關鍵幀對象的特征值更新為獲取模塊303獲取到的特征值。其中,參見圖4,獲取模塊303包括查找單元303a,用于在欲更新的資源文件中,查找與擴展對象的索引屬性存儲的索引值相同的索引值;獲取單元30北,用于獲取查找單元303a查找到的相同的索引值對應的特征值。進一步的,該裝置還包括卸載模塊305,用于加載欲更新的資源文件之前,卸載更新前的原資源文件。其中,創(chuàng)建模塊301創(chuàng)建的擴展對象還包括地址屬性,用于存儲關鍵幀對象的地址,更新模塊304,具體用于獲取關鍵幀對象的地址,并記錄在擴展對象的地址屬性, 將地址屬性存儲的地址對應的關鍵幀對象的特征值更新為獲取到的特征值。其中,創(chuàng)建模塊301創(chuàng)建的擴展對象還包括模塊屬性,用于存儲動畫應用的功能模塊,更新模塊304,具體用于當功能模塊對應的關鍵幀對象需要更新時,將關鍵幀對象的特征值更新為獲取到的特征值。其中,創(chuàng)建模塊301創(chuàng)建的擴展對象還包括特征屬性,用于存儲初始特征值,更新模塊304還用于當從加載模塊302加載的欲更新的資源文件獲取不到對應的特征值時,將關鍵幀對象的特征值更新為特征屬性存儲的初始特征值。本實施例提供的裝置,與方法實施例屬于同一構思,具體實現(xiàn)過程詳見方法實施例,這里不再贅述。本實施例提供的裝置,通過創(chuàng)建動畫的關鍵幀對象對應的擴展對象,并通過擴展對象中存儲有索引值的索引屬性以及靜態(tài)的包含特征值和索引值的資源文件,對動畫的特征屬性進行更新,實現(xiàn)了在程序運行時也能夠更新動畫,提高了用戶體驗,增強了軟件的人性化和個性化效果。并且,本實施例提供的方法簡化了新皮膚的制作過程,并且換膚過程中計算機開銷小,速度快。在換膚后,不僅界面的靜態(tài)效果改變,動態(tài)效果也隨之改變,極大地滿足用戶的個性化需求,提高了軟件的易用性。以上實施例提供的技術方案中的全部或部分內容可以通過軟件編程實現(xiàn),其軟件程序存儲在可讀取的存儲介質中,存儲介質例如計算機中的硬盤、光盤或軟盤。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
10
權利要求
1.一種更新動畫的方法,其特征在于,所述方法包括創(chuàng)建動畫的關鍵幀對象對應的擴展對象,所述擴展對象至少包括索引屬性,所述索引屬性用于存儲索引值;加載欲更新的資源文件,所述欲更新的資源文件包括索引值及其對應的特征值; 根據(jù)所述擴展對象的索引屬性存儲的索引值,從所述欲更新的資源文件獲取對應的特征值;將所述關鍵幀對象的特征值更新為獲取到的特征值。
2.如權利要求1所述的方法,其特征在于,所述根據(jù)所述擴展對象的索引屬性存儲的索引值,從所述欲更新的資源文件獲取對應的特征值包括在所述欲更新的資源文件中,查找與所述擴展對象的索引屬性存儲的索引值相同的索引值;獲取所述相同的索引值對應的特征值。
3.如權利要求1所述的方法,其特征在于,所述加載欲更新的資源文件之前還包括 卸載更新前的原資源文件。
4.如權利要求1所述的方法,其特征在于,所述擴展對象還包括地址屬性,用于存儲所述關鍵幀對象的地址,所述將所述關鍵幀對象的特征值更新為獲取到的特征值包括 獲取所述關鍵幀對象的地址,并記錄在所述擴展對象的地址屬性; 將所述地址屬性存儲的地址對應的關鍵幀對象更新為獲取到的特征值。
5.如權利要求1所述的方法,其特征在于,所述擴展對象還包括模塊屬性,用于存儲所述動畫應用的功能模塊,所述將所述關鍵幀對象的特征值更新為獲取到的特征值包括 當所述功能模塊對應的關鍵幀對象需要更新時,將所述關鍵幀對象的特征值更新為獲取到的特征值。
6.如權利要求1所述的方法,其特征在于,所述擴展對象還包括特征屬性,用于存儲初始特征值,所述方法還包括當從所述欲更新的資源文件獲取不到對應的特征值時,將所述關鍵幀對象的特征值更新為所述特征屬性存儲的初始特征值。
7.一種更新動畫的裝置,其特征在于,所述裝置包括創(chuàng)建模塊,用于創(chuàng)建動畫的關鍵幀對象對應的擴展對象,所述擴展對象至少包括索引屬性,所述索引屬性用于存儲索引值;加載模塊,用于加載欲更新的資源文件,所述欲更新的資源文件包括索引值及其對應的特征值;獲取模塊,用于根據(jù)所述創(chuàng)建模塊創(chuàng)建的擴展對象的索引屬性存儲的索引值,從所述加載模塊加載的欲更新的資源文件獲取對應的特征值;更新模塊,用于所述關鍵幀對象的特征值更新為所述獲取模塊獲取到的特征值。
8.如權利要求7所述的裝置,其特征在于,所述獲取模塊包括查找單元,用于在所述欲更新的資源文件中,查找與所述擴展對象的索引屬性存儲的索引值相同的索引值;獲取單元,用于獲取所述查找單元查找到的相同的索引值對應的特征值。
9.如權利要求7所述的裝置,其特征在于,所述裝置還包括卸載模塊,用于加載欲更新的資源文件之前,卸載更新前的原資源文件。
10.如權利要求7所述的裝置,其特征在于,所述創(chuàng)建模塊創(chuàng)建的擴展對象還包括地址屬性,用于存儲所述關鍵幀對象的地址,所述更新模塊,具體用于獲取所述關鍵幀對象的地址,并記錄在所述擴展對象的地址屬性,將所述地址屬性存儲的地址對應的關鍵幀對象的特征值更新為獲取到的特征值。
11.如權利要求7所述的裝置,其特征在于,所述創(chuàng)建模塊創(chuàng)建的擴展對象還包括模塊屬性,用于存儲所述動畫應用的功能模塊,所述更新模塊,具體用于當所述功能模塊對應的關鍵幀對象需要更新時,將所述關鍵幀對象的特征值更新為獲取到的特征值。
12.如權利要求7所述的裝置,其特征在于,所述創(chuàng)建模塊創(chuàng)建的擴展對象還包括特征屬性,用于存儲初始特征值,所述更新模塊還用于當從所述加載模塊加載的欲更新的資源文件獲取不到對應的特征值時,將所述關鍵幀對象的特征值更新為所述特征屬性存儲的初始特征值。
全文摘要
本發(fā)明公開了一種更新動畫的方法和裝置,屬于動畫領域。方法包括創(chuàng)建動畫的關鍵幀對象對應的擴展對象,其至少包括索引屬性;加載欲更新的資源文件,欲更新的資源文件包括索引值及其對應的特征值;根據(jù)擴展對象的索引屬性存儲的索引值,從欲更新的資源文件獲取對應的特征值;將關鍵幀對象的特征值更新為獲取到的特征值。裝置包括創(chuàng)建、加載、獲取、更新模塊。本發(fā)明實現(xiàn)了在程序運行時也能夠更新動畫,提高了用戶體驗,增強了軟件的人性化和個性化效果,并且簡化了新皮膚的制作過程,換膚過程中計算機開銷小,速度快,在換膚后,不僅界面的靜態(tài)效果改變,動態(tài)效果也隨之改變,極大地滿足用戶的個性化需求,提高了軟件的易用性。
文檔編號G06F9/445GK102193806SQ20101012680
公開日2011年9月21日 申請日期2010年3月4日 優(yōu)先權日2010年3月4日
發(fā)明者任旻, 謝偉文 申請人:騰訊科技(深圳)有限公司