說明:素材來源于網絡,版權歸版權所有人所有
遊戲中的精靈非常常用,spirit這個小玩意具體誰發明的不得而知,從遊戲開發的角度上,精靈可以幫助開發者便捷的完成開發工作,Silverlight基于MVC體系,控件就成了遊戲開發者們理想的精靈,然而,具體用什麼來構成精靈的基礎,讓我們來研究一下。
在那之前,我們先準備一下素材,一組足夠長的動畫資源:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/165014247.jpg"></a>
Silverlight提供了如下容器:Grid、Canvas、StackPanel、Border、ScrollViewer,其中隻有Grid和Canvas符合遊戲精靈的容器,至于為什麼,請參看後面三個的MSDN說明以及用法。
Grid和Canvas能夠為作為精靈容器,但是它們之間有着很明顯的差別,從字面意義上講Grid是格子,Canvas是畫布,Grid提供的控制内部元素的方法是通過邊距進行,而Canvas是通過笛卡爾坐标系坐标,其實就是國中書本上的直角坐标系,關于Grid和Canvas之間的不同,來看下面的圖檔:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/165023690.jpg"></a>
Grid定制内部元素的對齊樣式和邊距來鎖定位置,如圖所示即便是Grid發生變化,内部元素也會按照邊距進行寬高調整,除非解鎖邊距(設定對齊方式),Gird有個好處在于如果圖檔寬高固定,可以固定内部的對齊坐标,比如底部對齊這就比較友善我們管理,用圖形的方式表示為:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/165031686.gif"></a>
如果用Grid作為容器實際運用到Silverlight當中圖檔顯示如下:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/165040391.gif"></a>
Canvas的景象則是另外一番,畢竟使用的純粹的坐标畫布,無非是位置問題,即便Canvas的大小為0,内部的元素仍然能夠顯示,是以這也是大多Silverlight開發者喜歡用Canvas的原因,畢竟清楚明了,隻需要做偏移即可,下面是一張圖檔,可做參考:
<a target="_blank" href="http://blog.51cto.com/attachment/201111/165109642.gif"></a>
無論是Grid還是Canvas,作為精靈的容器應該是依據不同的需要進行選擇,StackPanel在特定情況下作為精靈容器也不失為一個好的選擇,制作精靈是的最終目的是為開發遊戲友善,能夠解決我們問題才是最終的需求,比如下述的情況,該如何用選擇呢?
<a target="_blank" href="http://blog.51cto.com/attachment/201111/165117511.gif"></a>
如果真是一個可以換裝的網絡遊戲,那麼上面的情況就不得不詳加考慮,因為動作造成身體的各個部分不是按照特定坐标進行轉換,或者對齊,最終需要一個完美的解決方法來搞定它們,如果隻是做一個簡單的遊戲,則就無需大費周章,最好的解決方案是多種類型的容器,可以依據不同的需求調動……總的來說,遊戲開發考驗自身的時候到了:)
本文轉自nowpaper 51CTO部落格,原文連結:http://blog.51cto.com/nowpaper/712603