復合動畫您可以混合等待和未等待的呼叫來建立復合動畫。 例如,假設您希望按鈕在大小擴充套件的同時旋轉360度然後收縮。viewextensions類定義乙個方法名稱scaleto,它為scale屬性設定動畫,就像rotateto為rotate屬性設定動畫一樣。
復合動畫
您可以混合等待和未等待的呼叫來建立復合動畫。 例如,假設您希望按鈕在大小擴充套件的同時旋轉360度然後收縮。
viewextensions類定義乙個方法名稱scaleto,它為scale屬性設定動畫,就像rotateto為rotate屬性設定動畫一樣。 button大小的擴充套件和收縮需要兩個連續的動畫,但這些動畫應該與旋轉同時發生,這只需要一次呼叫。 因此,rotateto呼叫可以在沒有await的情況下執行,並且當該動畫在後台執行時,該方法可以對scaleto進行兩次順序呼叫。
在animationtryout中嘗試:
async void onbuttonclicked(object sender, eventargs args)
持續時間比正常時間長,這樣你就可以看到發生了什麼。 rotateto方法立即返回,第乙個scaleto動畫從那時開始。 但是,等待第乙個scaleto上的運算子會延遲第二個scaleto的呼叫,直到第乙個scaleto完成。 那時,rotateto動畫只完成了一半,button旋轉了180度。 在接下來的1,000毫秒內,rotateto幾乎在第二個scaleto動畫完成的同時完成。
這是按鈕,因為它正在通過動畫:
因為onbuttonclicked方法使用async關鍵字標記,並且第乙個rotateto沒有await運算子,所以您將從編譯器收到一條警告訊息,指出:「因為不等待此呼叫,所以當前方法的執行在 通話完成。 考慮將'await'運算子應用於呼叫的結果。「
如果您不想看到該警告訊息,可以使用禁用該特定警告的#pragma語句將其關閉:
#pragma warning disable 4014您可以將該語句放在源**檔案的頂部,以禁用整個檔案中的警告。 或者您可以將其置於違規通話之前,並在通話後重新啟用這些警告:
#pragma warning restore 4014
第二十二章 動畫(七) 雲棲社群
task.whenall和task.whenany另乙個強大的選項可讓您以非常結構化的方式組合動畫,而無需擔心編譯器警告。task類的靜態task.whenall和task.whenany方法旨在同時執行多個非同步方法。task.whenall和task.whenany 另乙個強大的選項可讓您以非常...
第二十二章 Teamware需求
teamware正如他的名字一樣,是乙個團隊使用的groupware。groupware的定義是 teamware的功能需求 公共功能 使用者管理 角色管理 客戶管理 crm 專案管理 安全 授權和認證 業務功能 公告欄 notice 位址本 address book todo列表 todo lis...
第二十二題
第二十二題 韓信點兵 在中國數學史上,廣泛流傳著乙個 韓信點兵 的故事 韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點名的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數 按從1到5報數,記下最末乙個士兵報的數為1 按從1...