有的老師來信詢問講課中演示的文字書寫動畫如何制作,下面介紹一種設(shè)計(jì)方法。
T1-20 書寫動畫界面
這不是Flash動畫。這種動畫的制作方法和Flash不一樣,因?yàn)镋xpressionBlend中沒有橡皮擦工具,但同樣可以實(shí)現(xiàn),如T1-20。動畫界面由1個背景圖、2個靜止卷軸、一只毛筆和1個Textblock(書法研究)組成。其中背景圖和卷軸的設(shè)計(jì)已經(jīng)在卷軸動畫中涉及,這里不再重復(fù)。動畫形成這樣的效果:1支毛筆書寫“書法研究”4個漢字,鼠標(biāo)左鍵點(diǎn)擊背景圖的矩形退出動畫程序。
1、窗口設(shè)計(jì)
新建項(xiàng)目,MainWindow的Window屬性設(shè)置為:
“外觀”欄目中,WindowStyle-None;AllowsTransparency選中。
“畫筆”欄中“Background”和“BorderBrush”屬性均設(shè)為“無畫筆”。
以上設(shè)置后,窗口上方的控制條被取消,需要添加退出應(yīng)用的事件。
“布局”欄目中,Height=600,Width=800。
“公共屬性”欄目中,WindowStartupLocation-CenterScreen。
LayoutRoot屬性設(shè)置為:
“畫筆”欄目中,Background-無畫筆。
2、動畫實(shí)現(xiàn)方案
ExpressionBlend的【工具】面板中目前沒有提供橡皮擦工具,書寫文字的動畫就要另外想辦法。下面我們以一個比較簡單的漢字“大”說明書寫過程動畫的一種設(shè)計(jì)方法。
這種設(shè)計(jì)方法的基本思路就是用無邊框、和文字背景同色的若干塊“矩形”覆蓋文字筆畫形狀(需要時要旋轉(zhuǎn)矩形),覆蓋從文字的最后筆畫形狀開始,一直覆蓋到該文字的起筆,下圖是“大”子被矩形覆蓋后的形狀,為了說明覆蓋情況,設(shè)置了矩形邊框,實(shí)際設(shè)置動畫時沒有邊框。
每次覆蓋必須選中窗口的根布局,這樣覆蓋后的矩形形成了這樣的層次順序:后覆蓋的矩形處于前1個矩形的上層,起筆處于最上層,上層矩形的大小就不會有嚴(yán)格的尺寸限制(實(shí)際上只要覆蓋了筆畫形狀,矩形大小沒有嚴(yán)格限制,只要不影響上一筆畫的顯示即可,這給設(shè)計(jì)帶來方便),矩形的X軸或Y軸的軸向一般沿筆畫形狀方向。
這樣1個文字會有很多矩形,覆蓋完成后將這些矩形全部組合成1個組,為區(qū)分用被覆蓋的字作為組名。
T1-21 矩形覆蓋
矩形覆蓋和字體有直接關(guān)系,注意系統(tǒng)有無相應(yīng)的字體資源?!緦傩浴棵姘宓摹拔谋尽睓谥杏凶煮w的“嵌入”選擇項(xiàng),需要時可以選擇。
T1-22 文字被矩形覆蓋后的對象和時間線面板
3、毛筆設(shè)計(jì)
毛筆由筆桿、筆頭和筆繩組成。筆桿是1個矩形,和卷軸的設(shè)計(jì)方法一樣。筆頭和筆繩用【工具】面板中的筆工具畫出形狀路徑,筆頭顏色采用漸變畫筆,筆繩用純色畫筆。最后用Grid組成1組,命名為“毛筆”。
4、故事板設(shè)計(jì)
建立1個故事板,從“書”字的起筆開始針對覆蓋矩形設(shè)計(jì)動畫,逐個進(jìn)行,每個矩形使用X或Y軸變換壓縮,以露出字的筆畫形狀,根據(jù)筆畫長短選擇關(guān)鍵幀之間的時間間隔,時間間隔的末尾設(shè)置對應(yīng)矩形的“外觀”屬性中的“Visibility”為“Hidden”,依次逐一設(shè)計(jì)每個矩形直到“書”字的最后1筆的最后1個覆蓋矩形。
然后選中“毛筆”,從“書”字的起筆設(shè)計(jì)“毛筆”的位移動畫,最好用鍵盤中的箭頭鍵移動“毛筆”,直到“書”字的最后1筆的最后1筆。注意“毛筆”的位置變化、沿筆形的時間變化。設(shè)計(jì)完成后在【對象和時間線】面板將“書”字“鎖”定。每個字的設(shè)計(jì)方法是一樣的,但要注意字與子之間的“毛筆”運(yùn)動。
注意“毛筆”應(yīng)放置在布局的最上層。
5、背景圖矩形的鼠標(biāo)左鍵單擊事件:
鼠標(biāo)左鍵單擊背景圖的矩形ExitRectangle將退出應(yīng)用程序,代碼是。
private voidExitRectangle_MouseLeftButtonDown(object sender,System.Windows.Input.MouseButtonEventArgs e)
{
Application.Current.Shutdown();
}
故事板動畫對象涉及若干個矩形,故事板圖形不方便展示,請讀者參看光盤中的實(shí)例,不再列出。動畫設(shè)計(jì)完成。