實在不好意思,前一段我家老爺子住院做了個頸椎手術,最近他老人家身體好了(剛剛和母上逛公園去了),我也就閑下來了。很長時間沒上部落格,也沒有讀任何郵件,非常對不住大家,這兩天我會補回來。
——————————————————————————————————————————————————
不過,這段時間小弟並非什麼都沒幹,話說LGame的0.3.3正式版,已經到了整理下代碼就能發的程度了,順便傳兩張圖。
我對Java版也做了一些修正,比如小弟最近將ADT升級到2.0後,發現以前的樣本工程全部無法【直接】使用了,經仔細觀察,發現是Eclipse工程配置和舊版有了變化而導致的;因此我在Beta版中又額外修正了部分樣本,以防使用者無法使用舊版LGame樣本時,而誤以為是架構運行Bug(-_-|||)。其實最簡單的修改方式,無非是產生新工程,然後copy源碼過來,這樣原來的遺留項目也就正常了(一開始就直接用ADT1.6以上版本的使用者不必操心此問題)。
PS:7月12上傳到SVN中的。
另外,我為LGame中添加了SpriteBatch,SpriteRegion,LTextureRegion這三個基本同Libgdx近似名稱類功能等價的新類(但座標系不同,具體功能也有擴充和刪減,還加入了SpriteBatchScreen這個直接調用SpriteBatch的類),方便移植些東西過來。並增加了一個LGame和Libgdx的混用包,以求更直接的“照搬”代碼。需要注意的是,此混用包是以LGame底層API為基礎的Libgdx功能再現,所以並不是標準的Libgdx類庫,功能有所刪減,同時也不需要Libgdx的so庫支援(SVN的Beta版中有使用的例子)。另外,我將Box2D那部分使用Libgdx的代碼也放到裡面去了,也就是說Physics部分現在需要同時載入這個包才能用。
除了標準的setScreen方法外,最近我又新添加了replaceScreen這一切換方式,用以進行漸進式的表單變換(通過設定MoveMethod模式,可以進行16種樣式的表單移動交替,就是常見的一個表單逐步進入畫面,一個表單逐步移出畫面那種橋段……)。PS:該方式本身就屬於特效,所以使用replaceScreen切換畫面時,在onTransition設定的特效會被強制無效化。
對Action事件部分也有較大修改,觸發對象換成了所有繼承自Action介面的類,而不限於Actor對象才能使用自動事件。不過原先使用了Actor做動作的話也無需介懷,即便您使用到了Actor特有的函數(startAnimation,stopAnimation之類的),直接強轉Action為Actor即可照用不誤。
並且刪除了一些使用量較少的輔助類,為新增加的功能騰出空間。
經過長時間“調教”,話說0.3.3版中明顯的Bug應該已經找不到了,剩下的就是同步到C#、C/C++以及HTML5(JavaScript)這三種語言的版本中去。事實上,因為小弟開發LGame的時間段太散(經常寫幾天又中斷幾天),所以很多地方測試不夠,導致舊版中有些很明顯的Bug存在(比較明顯的是C#版,7月12號更新的這版Beta也就剛剛能使用|||)。所以我對0.3.3版的正式發布變得非常小心,絕不留後患(發布0.3.3後我就準備組團了,畢竟維護4種語言個人很難做到,突顯得打基礎更重要~)
之所以沒有立即發布0.3.3,是因為小弟整合四種語言找平衡中,順路補全測試案例,否則有的模組大家不知道該怎麼用-_-。比如把Java版原來的 org.loon.framework.android.game.xxxx 包命名方式直接縮短為 loon.xxxx。
具體原因是為了兼顧C/C++版,因為如果和Java版package基本等價,在C/C++中使用命名空間時,就要變成如下命名樣式:
namespace org
{
namespace loon
{
namespace framework
{
namespace javase
{
namespace game
{
namespace core
{
這長度,實在太碉堡了|||。而且調用時using org::loon::framework::game::xxxx一大串也非常難記。所以為了平衡各版API通用性,小弟只能犧牲點Java習慣,削足適履(雖然包名太短,在Eclipse裡展開效果不好看,但在NetBeans中看著還成-_-)
PS:如果您暫時還需要使用舊版0.3.3-Beta,小弟建議一定要下載SVN中0712這個更新,否則以後的0.3.3(無論是Beta還是正式發布)都將不是目前這種包名了。當然,也沒有多大的變化,僅僅是包名縮短,加之極少量LGame中Java類名與C/C++及C#版中namespace名或API名有衝突,進行了改名而已。等正式頒發布時小弟會加以詳細說明(縮短全部Java包名後,jar居然額外省出了十幾KB……)。
還有C++版和Java版的匹配問題不用擔心,小弟把8成的Java常用API都以C++的方式實現了(具體地說,是java.io,java.nio,java.lang,java.util這四個和本地環境關係不大的部分被我移植了),所以基礎資料型別 (Elementary Data Type),集合,線程之類的寫法都可以直接套用,有簡單的GC實現(引用計數器),可以在設定好的前提下支援反射(手動註冊反射類)。這都是為了讓Java項目能直接匯出為C++項目所做的基礎工作。
0.3.3正式版,過兩天加一個初步的遷移工具(主要功能是把Java版項目轉換成C#、C++版項目,所以需要API高度匹配,否則不好做。為此C++版甚至仿寫了8成的Java類庫),再寫幾個新樣本就放出來了。大體上講依舊Java文法特性為主,兼顧C/C++與C#使用者習慣,在和前三種文法沒有大衝突的前提下,適當考慮JavaScript使用者習慣。
___________
最近劇荒,補女皇之刃,附帶追鬼畜勇者,還我H之魂(新出的7月裡番已經看完,只能看看這些了)——以及偏正常,略百合的貧乏神來了(另,距離第十三號倉庫開播還有九天,總算有個能看的了)。