AS3的通用工具類庫 GhostCat
GhostCatTools已經發布,使用Flex Spark框架以及AIR和部分GhostCat功能制作。 包含大量開發常用的功能。
下載地址:http://ghostcat.googlecode.com/svn/trunk/GhostCatTools/GhostCatTools.exe
GhostCat是一個功能非常豐富的開源工具庫,(同時也包含有一套完整的UI組件,但它只是類庫的一個衍生品。)
它基本可以涵蓋你可能遇到大部分問題。
使用UI將會增加50K左右的體積,使用非UI顯示對象會增加20K以上的體積,而非顯示類可以非常小。
GhostCat采用BSD協議可以自由地應用于商業及非商業應用中。如果您使用了GhostCat,甚至用于實際項目中,希望能通過郵件給予回饋。
實際應用項目
升職記 CeoDream
http://app.pengyou.qq.com/appframe.html?appid=608&height=950&frame=http%3A%2F%2Fceo.qzoneapp.com%2Findex.php http://apps.renren.com/ceodream
http://apps.非死book.com/ceodream
GhostCat is a feature-rich open source tools for libraries, (which also contains a complete set of UI components, but it is only a class library derivatives.)
It basically can cover most of the problems you may encounter.
Using the UI will increase the size of 50K or so, use of non-UI display object will increase more than 20K in size, rather than display type can be very small.
GhostCat using BSD agreement may be freely used in commercial and non-commercial applications. If you use a GhostCat, even for the actual project, we hope to give feedback through e-mail.
The practical application of project
renren.com: ceo dream
http://apps.renren.com/ceodream?origin=103&_vip_flag=32
@author flashyiyi
blog:http://uh.actionscript3.cn/space.php?uid=12147
參考
http://ghostcat.googlecode.com/svn/trunk/GhostCat/asdoc-output.chm
SWC下載
http://ghostcat.googlecode.com/svn/trunk/GhostCat/bin/GhostCat.swc
SVN工具
http://tortoisesvn.net/downloads.html
教程可查看wiki
示例(打不開就用IE):
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/AStarExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/BindingExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/CollisionExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/ControlRectExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/GIFExample.html
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/GXMLExample2.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/GXMLExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/IFrameExample.html
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/IMEExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/LangageExample.html
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/LightExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/Paper3DExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/RightClickExample.html
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/SkewExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/SmoothCurveExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/SWFDecoderExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/TestExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/Tile45Example.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/TileExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/TweenExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/SortExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/EllipseLayoutExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/PixelExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/TableExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/StringTweenExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/BitmapScreenExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/SoundExample.html
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/TransitionExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/FrameRateExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/WalkExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/MazeExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/BombExample.swf
幾個簡單的UI示例
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/UIBoxExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/UIBuilderExampler.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/UIComboBoxExample.swf
http://ghostcat.googlecode.com/svn/trunk/example/bin-release/UIScrollExample.swf
GhostCat原 名ASGameUI,初期設計只是想做一個輕量化的UI組件庫。FLEX暫且不提,就算AsWing實際上都未能實現和Sprite的完美結合,而且體積 依然很抱歉。因此,很多開發者最終被迫選擇了自行開發。然而,他們開發的東西要不功能不夠,不要是針對性工具,缺乏通用性,因此并無法補齊這個空缺。
ASGameUI來源于一個“邏輯注入”的設想,犧牲了布局的便利性,并充分利用FLASH IDE為自身服務,使得它在符合面向對象的編程方式的同時,亦實現了和原始時間線開發類似的自由度和便利性,從而可以在純代碼環境下直接套用原本動畫網站 豐富的表現方式,達到兩種互斥方式的結合。從而,使得在開發豐富表現的UI時,開發成本大幅度降低。
值得一提的是,雖然GhostCat在底層引入了與UI無關的大量內容,在使用UI時體積依然只有50K出頭(不使用UI會很低)。這主要來源于松散的類庫設計。你可以將大量內容引用,并在項目中充分使用其功能,也可以僅僅引用一個功能點,你并不會因為引入了一個功能而使得SWF體積大幅度上升。
GhostCat的UI充分考慮了其表現。除了親和MovieClip之外,它同時在組件內部自帶了緩動和動畫效果。這是目前其他類庫所沒有的。而且,和一些自寫類庫相比,GhostCat在控制體積的同時,亦提供了布局,List,ItemRender等高級特性,使得它在基本功能上同樣不亞于ASWing,FLEX等組件,僅僅是效率和便利程度上不及。
GhostCat之所以改名,是因為這個類庫目前已經遠遠超出了UI的概念。它利用自己的基層類庫進行發散,誕生了許多有用而獨特的功能,諸如:
提供了MovieClip的擴展:
你可以用同一種方式操作矢量動畫,位圖動畫,以及代碼動畫并可將動畫進行拼接處理。動畫自帶倒放,幀速控制,播放隊列功能,并可將矢量動畫轉換為位圖動畫播放。
一個奇特的動態內容顯示模塊:
可以很簡單的使用(你可以假想它只是一個超大的重復內容圖形),由它自動進行重復對象的創建,移動,刪除,完美處理縮放和移動。而且,它甚至是List實 現的基礎!僅僅是重寫了幾個方法,它便可以立即實現45度角的游戲地圖效果。你也可以把它僅僅作為一個邏輯類,并利用事件,實現你想要的任何功能。
一個非常完善的XML反序列化器:
你可以用它表述任何種類的類(可以包含構造函數參數列表),并且模仿FLEX實現了事件自動監聽,屬性外鏈等功能。可以是多層顯示對象的序列化,也可以是 一組包含復雜類的數據。擴展它也很簡單。你只需要理解并重寫它的3個方法,而如果僅僅是想進行屬性名稱的轉義,只需要設置一個屬性即可,而這也是自定義解 析器最常見的需求。
一個通用型隊列系統:
它不僅僅用來進行資源的排隊加載,而且可以排隊任何東西!函數,聲音,彈窗,以及判斷,轉向,循環。某種程度上,它甚至像是一個腳本引擎。而使用和擴展亦 非常簡單。使用它,new,然后commit()即可,要擴展它,你只需要實現一個普通的命令模式,有效代碼可以只有幾行。作為例子,我已經提供了一個簡 單的任務系統,在這種需求里,命令模式的優勢被表現得淋漓盡致。這也是一個處理AS3沒有多線程時的代替方案。
一個簡便的位圖引擎:
是的,雖然同樣是addChild,但通過這種方式加上去的東西,就是用自帶的優化渲染方式實現的。在大量物品移動時,它可以比默認渲染方式獲得更好的性 能。并且,它還可以即時地在多種渲染模式內切換,使用風險較低。位圖引擎亦實現了基本的鼠標事件模擬功能。從這個地方開始擴展,提供了一個使用很簡單的位 圖特效類,只需要一個行代碼和簡單的設置便可讓對象擁有平滑殘影和擴散特效。再配合物理類,便可以形成一個完整的粒子引擎。
GhostCat的功能遠不止上面所說,事實上,大部分的通用功能它都已經在內部獲得了實現(諸如Tween),這些就不就再提了。僅僅列出一些特殊功能。
-判斷矢量邊緣實現不規則物品碰撞檢測(非位圖)
-高效位圖碰撞及重疊矢量檢測
-A星,深/廣度,2D/3D/路點,尋路方式統一處理。
-二次貝爾法曲線,按長度切割和計算法線,光滑曲線擬合(過點或者不過點)
-SWF解析器,從ByteArray中播放聲音,直接控制AVM1的動畫類容。
-豐富的文本緩動,部分文字Filter,漸變色文字,字符差異對比,ANSI轉碼,URL解碼,中文數字,拼音碼,這是一個單獨的底層包
-完全由FLASH實現的拼音輸入法,需要加載200K的詞庫,光標跟隨并可詞語輸入(感覺和智能ABC差不多)
-縮略圖,倒影,梯形變換,馬賽克,各種特效,火焰什么的
-完整功能的自定制過渡,不僅能用,也能創造。如果不會用,可以使用Creater中的模板
-粒子,物理,景深
-像QQ那樣截屏!
-流方式讀取文本和圖片。HTML可以,FLASH也可以
-和FXG類似的道理,用對象保存繪制操作,簡化繪制過程
-多種拖拽工具,變形工具,編輯形狀工具。單個拖動點也可單獨使用。
-單文件自加載
-右鍵,雙擊,三擊,鍵盤管理,鼠標手勢
-影子生成器。FLASH也是可以模擬出效果不錯的光影的。影子可以折墻壁
-防客戶端修改解決方案(內存修改,加速)
-切割圖形,同時支持矢量,位圖,而且,你可以按45度角來切!
-顏色模式轉換
-去背景,魔法棒
-圖文混排的簡單實現。也可以顯示Table表格
-濾鏡代理:修改了濾鏡的屬性便能立即生效,你可以直接對它Tween!當然,水波放大鏡,對比度飽和度順便也提供了。
-常用的JS擴展:IFrame,便捷的提供接口給外部JS,調用瀏覽器音樂播放器播放MID,以及一些常用的防刷新,防鼠標滾輪干擾。當然,deeplink是不可少的。
-扇形,圓環,虛線
-四則運算(字符串分析)
FP10限定
-Beep音樂,變速播放
也許在使用上,GhostCat還是需要一些成本(至少你需要知道各個功能都在哪個位置),但是這是值得的,一些問題可能你現在不會遇到,將來也可能會遇到。這是一件一勞永逸的事情。同時,我也希望GhostCat也能給你一些啟發,讓你去做一些以前認為無法做到或者過于麻煩而不去做的事,如此,提高FLASH產品的質量,從而促進行業發展,使所有人受益。