|
記得在WP7上玩一個游戲有段動畫很有趣,是背景在進行晝夜交替,一會兒白天太陽出來白天了,一會兒月亮蹦出來夜晚了,在以前做C++程序的時候曾經實現(xiàn)過類似的效果,今天早上移植了一下到Silverlight當中效果還是不錯,當然了,有了Blend神器,就完全不用通過代碼的方式實現(xiàn),真的方便了很多。
以前的效果預覽:
由于條件所限定,本篇中實現(xiàn)的效果僅僅為一個引子,更細的細節(jié),還需要自行制作,請注意,本篇的程序尺寸為600x400的標準。
為了方便起見,就不用Blend來畫太陽和月亮了,直接使用了兩張圖片:
加入工程后,打開MainPage控件,添加兩個Rectangle,分別來表示天空和海面:
添加月亮進來,移動到中間
下面是一個小的布局技巧,為了避免月亮隨著布局而發(fā)生怪異的變化,把寬高定死,并且設定為絕對中間對齊
然后太陽也是這么添加到界面中,現(xiàn)在將海移動到前面來,為了在后面的動畫中擋住太陽和月亮:
那么現(xiàn)在開始制作動畫了,新建一個故事板動畫,名字為ANI_Loop,然后為太陽和月亮添加關鍵幀,并且移動到海面之下:
現(xiàn)在把月亮移動上來,畢竟一天之際在于午夜時分么。
好了,現(xiàn)在形成一個交替循環(huán),選擇ANI_Loop把自動回放選上,把播放測試設為Forever
現(xiàn)在可以播放一下,看看是不是循環(huán)的出來下去呢,為了增加一些動感,我決定加一個緩沖效果,現(xiàn)在選擇所有的幀,看好,可是所有幀哦。
現(xiàn)在播放起來看看,是否很有趣了呢,太陽和月亮真的就是“蹦”出來的,當然了,你可以嘗試其余的緩沖效果,看看是否能形成更有趣的感覺。
不過大家肯定不會就此滿意,因為這天空海面實在太丑了,而且太陽和月亮出來也沒有變化,現(xiàn)在下面就開始完成這個問題:
現(xiàn)在把時間軸移動到開始,開始調天空和海面的顏色,大家可以依據(jù)自己的想法調整,直到自己滿意,此時可以用月亮做參照。
同樣,再將第2秒,即清晨的顏色調出來,此事不需要關閉動畫,在Silverlight里Color是可以作為動畫的的類型之一。
有的時候你可能需要美術設計師的支持,才能得到最佳的表現(xiàn)效果,現(xiàn)在播放一下,看看是否不錯呢,日月交替,晝夜交替,如果你想拉長時間,只需要把關鍵幀調整即可。
我們在下面加一下小細節(jié),讓整個的效果看起來更加真實:月亮的泛光、海面、小星星的制作
為了不產生混亂,現(xiàn)在將動畫的編輯模式關閉,點擊界面上方的小紅色按鈕關閉。
月亮看起來更加真實了,而海面的話,需要一張海面的波紋圖片,添加到海面的Rectangle的下面,并將海面的透明度降低:
關于星星的制作會用上另外一個Effect效果——模糊,畫一個小圓圈,5x5就夠了,然后添加模糊效果,將參數(shù)設置如下:
當然了這些細節(jié)將會增加更多的設計和編碼時間,例如白天星星是不會出現(xiàn)的、波紋只是不動肯定不會好看、甚至太陽和月亮的在海面上的投影,這些細節(jié)都決定這個場景的真實性,我相信各位能夠做的更好。
最后不要忘記在構造函數(shù)中添加一個Begin,否則這個動畫不會自動的運行。
本篇工程源代碼下載地址如下:點擊直接下載
NET技術:Silverlight 游戲開發(fā)小技巧:晝夜交替動畫,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。