- 理解flash的顯示列表
- 理解事件冒泡,理解滑鼠事件等
- 理解flash的性能瓶頸和大多數影響性能的地方
- 理解影格跑道模型,知道timer和enterFrame的關聯和區別
- 理解RSL(runtime share lib)和loader的applactiondoamin以及多模塊開發/運行的優勢
- 理解反射,類別定義,庫鏈接定義
- 理解常用數學公式
- 理解圖形圖像和多媒體原理,會處理圖形圖像
- 理解動畫原理和影格,刷新的概念
- 理解小數點坐標和整數坐標點區別,flash最小坐標區間以及各種坐標變換
- 理解flash重繪區域和內部的運行規則
- 理解BitmapData,copyPixel和Blit以及Blit適用的地方,原理
- 理解BitmapData常用操作,如:濾鏡,通道拷貝等
- 理解BitmapData的內存共享和釋放,引用,垃圾回收(強制GC)
- 理解對像池
- 理解Socket和二進制操作
- 理解flash裡的聲音控制以及聲音二進制處理/獲取
- 理解怎麼和美術配和,什麼樣的東西能在表現和性能之間取得平衡
- 理解點陣圖和向量圖的差別以及點陣圖緩存、
- 理解MousEnable和mouseChildren和常用的濾鏡操作HSB等
- 理解AStar和路徑優化
- 理解Avatar原理
- 理解地圖和戰鬥機制和代碼,會做高性能的多人同步地圖
- 會控制操作界面
- 會平滑處理CPU避免峰值卡影格和優化實際運行性能,會內存換cpu,cpu換內存
- 理解UI製作和UI組件製作
- 理解如何使用flashAPI以及迅速掌握新出功能
- 理解網路坐標/數據同步,巡航算法
- 理解AIR和Flex,會使用Flex快速開發出項目中使用的工具
- 理解flash顯示原理,臟矩形算法
- 理解flash常用顯示對像操作
- 理解ObsServer設計模式和事件模型原理
- 理解二維矩陣和三維矩陣變換
- 理解手機開發和部署AIR
- 會使用一個3D引擎/框架
- 理解3D原理,理解顯卡基本原理
- 理解MVC思想,理解23種常用設計模式
- 理解OOP和面向過程,結構化程序的各自優勢
- 理解PNG8 ,PNG32,JPG,JPG-XR,H264,AAC,MP3,flash語音編碼
- 理解FMS和FMS相關操作類別
- 理解安全沙箱
- 深入研究各種算法,程序原理,設計方法
- 理解下載多線程,下載單線程,AS多線程以及Worker應用範圍
- 理解Debug,導出工程,斷點。
- 理解內存分析和性能分析以及優化
- 理解如何將一個大系統分解成多個子系統,子模塊以及如何合併
- 會需求分析,程序邏輯分析,系統分析,項目組織
- 掌握敏捷開發和迭代開發,提高開發效率,適應功能需求變化
- 理解測試和bug處理,理解團隊開發之間合作
- 會使用tweenMax等第三方類別庫,會開發類別庫
- 理解接口,繼承,組合封裝的作用
- 理解CDN和沙箱問題,常見網路知識,客戶端文件部署,更新操作版本控制
- SVN版本控制
- 理解領域知識,理解遊戲
- 理解SWC的作用(導出代碼,UI界面,資源等,以及配合RSL)
- 會使用自動構建界面/UI組件技術
- 理解煉金術,會從C/ C++傳統遊戲開發中學習經驗技巧甚至代碼
- 會掌控一個項目以及解決項目中出現的任何(注意這個詞)技術問題
- 會開發一個項目專用框架,會封裝項目底層
- 會製作一個遊戲2D/3D引擎
- 掌握獨立學習鑽研的方法。
- 做事情(寫程序)要有效率,並且穩定。
- 相信自己可以比別人做得更好並努力去做。
- 保持快樂心態並成為多面手,提高綜合素質和能力(不僅限於編程)
搜尋部落格文章
2013年4月23日 星期二
[轉] AS3 老鳥之路
外部載入執行階段共享資源swf相關設定
以前製作專案剛開始,都會把圖像字體直接放入主要檔案的元件庫中
這樣會造成檔案體積越來越大
有一種做法就是將這些圖像元件拉到外部swf中,在程式初始化預先載入
隨後利用ApplicationDomain.currentDomain.getDefinition(元件類別名稱)存取
請讓自己養成習慣,以往存取元件的方式,請用上列方式取代
載入外部swf的注意事項
主要swf與被載入的swf所屬同網域
請替Loader增加LoaderContext.applicationDomain=ApplicationDomain.currentDomain;
其他用法:對於要使用何種
主要swf與被載入的swf非屬同網域
請替Loader增加LoaderContext.
這樣會造成檔案體積越來越大
有一種做法就是將這些圖像元件拉到外部swf中,在程式初始化預先載入
隨後利用ApplicationDomain.currentDomain.getDefinition(元件類別名稱)存取
請讓自己養成習慣,以往存取元件的方式,請用上列方式取代
- 程式中直接建構實體。
- new AClass();
- 盡量減少使用Flash IDE創建的元件,盡可能的使用類別。
載入外部swf的注意事項
主要swf與被載入的swf所屬同網域
請替Loader增加LoaderContext.applicationDomain=ApplicationDomain.currentDomain;
其他用法:對於要使用何種
ApplicationDomain
屬性,您有下列四種選擇:- 載入器之 ApplicationDomain 的子系。預設值。 您可以使用
new ApplicationDomain(ApplicationDomain.currentDomain)
語法明確表示這項選擇。 這樣會允許載入的 SWF 檔直接使用父輩的類別,例如藉由撰寫new MyClassDefinedInParent()
。 然而,父輩卻無法使用此語法。如果父輩希望使用子系的類別,便必須呼叫ApplicationDomain.getDefinition()
以擷取這些類別。 這項選擇的優點在於,如果子系定義之類別的名稱,與父輩已定義的類別相同,並不會造成錯誤,子系將會直接繼承父輩對於該類別的定義,而且除非子系或父輩呼叫ApplicationDomain.getDefinition()
方法以擷取定義,否則都不會使用到子系的衝突定義。
- 載入器自己的 ApplicationDomain。您可以在使用
ApplicationDomain.currentDomain
時,使用此應用程式網域。 當載入完成時,父輩和子系都可直接使用彼此的類別。 如果子系嘗試定義的類別與父輩已經定義的類別同名,就使用父類別,忽略子類別。
- 系統 ApplicationDomain 的子系。您可以在使用
new ApplicationDomain(null)
時,使用此應用程式網域。 這樣會完全分隔載入器和載入對象,允許兩者以相同的名稱定義不同的類別,而不會造成衝突或遮蓋。 兩端都能看到另一端之類別的唯一方式,便是呼叫ApplicationDomain.getDefinition()
方法。
- 某些其它 ApplicationDomain 的子系。有時候,您可能會擁有更複雜的 ApplicationDomain 階層。 您可以從自己的 SecurityDomain,將 SWF 檔載入任何 ApplicationDomain。 例如,
new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain)
會將 SWF 檔載入至目前網域之祖父輩 (父輩的父輩) 的新子系中。
主要swf與被載入的swf非屬同網域
請替Loader增加LoaderContext.
securityDomain
= SecurityDomain.currentDomain
;[轉] allowScriptAccess與allowNetworking的用法介紹
AllowScriptAccess用法sameDomain:僅當SWF 文件和網頁位於同一域中時才允許執行外出腳本訪問。這是AVM2 內容的默認值。never:外出腳本訪問將始終失敗。always:外出腳本訪問將始終成功
剛才遇到前台發來的一個消息,一個蓮花鐘模塊總是彈出頁面,查了一下,發現這個模塊是很早以前就已經審核通過了,以前沒有發生過問題,看來是flash文件被人修改了。問了一下其他人,如何在不修改flash本身的情況下,禁止彈出窗口,果然是有方法,就是引用的時候設置一下allowNetWorking="none" allowScriptAccess="never"就行了。又學了一招。
到網上找了一份介紹這兩個屬性的資料,貼在這裡做個備忘
1,AllowScriptAccess
參數:
sameDomain:僅當SWF文件和網頁位於同一域中時才允許執行外出腳本訪問。這是AVM2內容的默認值。
never:外出腳本訪問將始終失敗。
always:外出腳本訪問將始終成功。
AllowScriptAccess參數可以防止從一個域中承載的SWF文件訪問來自另一個域的HTML頁面中的腳本。
對從另一個域承載的所有SWF文件使用AllowScriptAccess="never"可以確保位於HTML頁面中的腳本的安全性。
2,allowNetworking 参数: all(默认值)― SWF 文件中允许使用所有网络 API。 internal― SWF 文件可能不调用浏览器导航或浏览器交互 API,但是它会调用任何其它网络 API。 none― SWF 文件可能不调用浏览器导航或
2,allowNetworking
参数:
"all"(默认值)― SWF 文件中允许使用所有网络 API。
"internal"― SWF 文件可能不调用浏览器导航或浏览器交互 API,但是它会调用任何其它网络 API。
"none"― SWF 文件可能不调用浏览器导航或浏览器交互 API,并且它无法使用任何 SWF 到 SWF 通信 API。
可以控制 SWF 文件对网络功能的访问。调用被禁止的 API 会引发 SecurityError 异常。
当 allowNetworking 设置为 "internal" 时,以下 API 被禁止:
navigateToURL()
fscommand()
ExternalInterface.call()
当 allowNetworking 设置为 "none" 时,除了上面列出的那些 API 外,还会禁止以下 API:
sendToURL()
FileReference.download()
FileReference.upload()
Loader.load()
LocalConnection.connect()
LocalConnection.send()
NetConnection.connect()
NetStream.play()
Security.loadPolicyFile()
SharedObject.getLocal()
SharedObject.getRemote()
Socket.connect()
3,allowFullScreen 參數: 啟用全屏模式設置為true,否則設置為false(默認值) 僅當在響應鼠標事件或鍵盤事件時才會調用啟動全屏模式的ActionScript。如果在其它情況中調用,Flash Player 會引發異常。在全屏模
3,allowFullScreen
參數:
啟用全屏模式設置為"true",否則設置為"false"(默認值)
僅當在響應鼠標事件或鍵盤事件時才會調用啟動全屏模式的ActionScript。如果在其它情況中調用,Flash Player會引發異常。
在全屏模式下,用戶無法在文本輸入字段中輸入文本。所有鍵盤輸入和鍵盤相關的ActionScript在全屏模式下均會被禁用,但將應用程序返回標準模式的鍵盤快捷鍵(例如按Esc)除外。
當內容進入全屏模式時,程序會顯示一條消息,指導用戶如何退出和返回標準模式。該消息將顯示幾秒鐘,然後淡出。
如果某個調用方與Stage所有者(主SWF文件)沒有位於同一安全沙箱,則調用Stage對象的displayState屬性會引發異常。
管理員可以通過在mms.cfg文件中設置FullScreenDisable = 1對瀏覽器中運行的SWF文件禁用全屏模式。
在瀏覽器中,必須在HTML頁面中包含SWF文件,才能進入全屏模式。
在獨立的播放器或放映文件中始終允許全屏模式。(水中的魚)
< object classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase = "http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=9,0,28, 0"
width = "100%" height = "100%" >
< param name = "movie" value = "falsh.swf" />
< param name = "quality" value = "high" />
< param name = "AllowScriptAccess" value = "sameDomain" />
< param name = "allowNetworking" value = "all" />
< param name = "allowFullScreen" value = "true" />
< embed src = "falsh.swf" width = "100%" height = "100%" quality = "high"
pluginspage = "http://www.adobe.com/shockwave/download/download.cgi? P1_Prod_Version=ShockwaveFlash "
type = "application/x-shockwave-flash"
allowscriptaccess = "sameDomain" allownetworking = "all"
allowfullscreen = "true" > </ embed >
</ object >
AllowScriptAccess用法sameDomain:僅當SWF 文件和網頁位於同一域中時才允許執行外出腳本訪問。這是AVM2 內容的默認值。never:外出腳本訪問將始終失敗。always:外出腳本訪問將始終成功
剛才遇到前台發來的一個消息,一個蓮花鐘模塊總是彈出頁面,查了一下,發現這個模塊是很早以前就已經審核通過了,以前沒有發生過問題,看來是flash文件被人修改了。問了一下其他人,如何在不修改flash本身的情況下,禁止彈出窗口,果然是有方法,就是引用的時候設置一下allowNetWorking="none" allowScriptAccess="never"就行了。又學了一招。
到網上找了一份介紹這兩個屬性的資料,貼在這裡做個備忘
1,AllowScriptAccess
參數:
sameDomain:僅當SWF文件和網頁位於同一域中時才允許執行外出腳本訪問。這是AVM2內容的默認值。
never:外出腳本訪問將始終失敗。
always:外出腳本訪問將始終成功。
never:外出腳本訪問將始終失敗。
always:外出腳本訪問將始終成功。
AllowScriptAccess參數可以防止從一個域中承載的SWF文件訪問來自另一個域的HTML頁面中的腳本。
對從另一個域承載的所有SWF文件使用AllowScriptAccess="never"可以確保位於HTML頁面中的腳本的安全性。
對從另一個域承載的所有SWF文件使用AllowScriptAccess="never"可以確保位於HTML頁面中的腳本的安全性。
2,allowNetworking 参数: all(默认值)― SWF 文件中允许使用所有网络 API。 internal― SWF 文件可能不调用浏览器导航或浏览器交互 API,但是它会调用任何其它网络 API。 none― SWF 文件可能不调用浏览器导航或
2,allowNetworking
参数:
"all"(默认值)― SWF 文件中允许使用所有网络 API。
"internal"― SWF 文件可能不调用浏览器导航或浏览器交互 API,但是它会调用任何其它网络 API。
"none"― SWF 文件可能不调用浏览器导航或浏览器交互 API,并且它无法使用任何 SWF 到 SWF 通信 API。
"internal"― SWF 文件可能不调用浏览器导航或浏览器交互 API,但是它会调用任何其它网络 API。
"none"― SWF 文件可能不调用浏览器导航或浏览器交互 API,并且它无法使用任何 SWF 到 SWF 通信 API。
可以控制 SWF 文件对网络功能的访问。调用被禁止的 API 会引发 SecurityError 异常。
当 allowNetworking 设置为 "internal" 时,以下 API 被禁止:
navigateToURL()
fscommand()
ExternalInterface.call()
fscommand()
ExternalInterface.call()
当 allowNetworking 设置为 "none" 时,除了上面列出的那些 API 外,还会禁止以下 API:
sendToURL()
FileReference.download()
FileReference.upload()
Loader.load()
LocalConnection.connect()
LocalConnection.send()
NetConnection.connect()
NetStream.play()
Security.loadPolicyFile()
SharedObject.getLocal()
SharedObject.getRemote()
FileReference.download()
FileReference.upload()
Loader.load()
LocalConnection.connect()
LocalConnection.send()
NetConnection.connect()
NetStream.play()
Security.loadPolicyFile()
SharedObject.getLocal()
SharedObject.getRemote()
Socket.connect()
3,allowFullScreen 參數: 啟用全屏模式設置為true,否則設置為false(默認值) 僅當在響應鼠標事件或鍵盤事件時才會調用啟動全屏模式的ActionScript。如果在其它情況中調用,Flash Player 會引發異常。在全屏模
3,allowFullScreen
參數:
啟用全屏模式設置為"true",否則設置為"false"(默認值)
僅當在響應鼠標事件或鍵盤事件時才會調用啟動全屏模式的ActionScript。如果在其它情況中調用,Flash Player會引發異常。
在全屏模式下,用戶無法在文本輸入字段中輸入文本。所有鍵盤輸入和鍵盤相關的ActionScript在全屏模式下均會被禁用,但將應用程序返回標準模式的鍵盤快捷鍵(例如按Esc)除外。
當內容進入全屏模式時,程序會顯示一條消息,指導用戶如何退出和返回標準模式。該消息將顯示幾秒鐘,然後淡出。
如果某個調用方與Stage所有者(主SWF文件)沒有位於同一安全沙箱,則調用Stage對象的displayState屬性會引發異常。
管理員可以通過在mms.cfg文件中設置FullScreenDisable = 1對瀏覽器中運行的SWF文件禁用全屏模式。
在瀏覽器中,必須在HTML頁面中包含SWF文件,才能進入全屏模式。
在獨立的播放器或放映文件中始終允許全屏模式。(水中的魚)
僅當在響應鼠標事件或鍵盤事件時才會調用啟動全屏模式的ActionScript。如果在其它情況中調用,Flash Player會引發異常。
在全屏模式下,用戶無法在文本輸入字段中輸入文本。所有鍵盤輸入和鍵盤相關的ActionScript在全屏模式下均會被禁用,但將應用程序返回標準模式的鍵盤快捷鍵(例如按Esc)除外。
當內容進入全屏模式時,程序會顯示一條消息,指導用戶如何退出和返回標準模式。該消息將顯示幾秒鐘,然後淡出。
如果某個調用方與Stage所有者(主SWF文件)沒有位於同一安全沙箱,則調用Stage對象的displayState屬性會引發異常。
管理員可以通過在mms.cfg文件中設置FullScreenDisable = 1對瀏覽器中運行的SWF文件禁用全屏模式。
在瀏覽器中,必須在HTML頁面中包含SWF文件,才能進入全屏模式。
在獨立的播放器或放映文件中始終允許全屏模式。(水中的魚)
- < object classid = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase = "http://download.macromedia.com/pub/shockwave/cabs/ flash/swflash.cab#version=9,0,28, 0" width = "100%" height = "100%" >
- < param name = "movie" value = "falsh.swf" />
- < param name = "quality" value = "high" />
- < param name = "AllowScriptAccess" value = "sameDomain" />
- < param name = "allowNetworking" value = "all" />
- < param name = "allowFullScreen" value = "true" />
- < embed src = "falsh.swf" width = "100%" height = "100%" quality = "high" pluginspage = "http://www.adobe.com/shockwave/download/download.cgi? P1_Prod_Version=ShockwaveFlash " type = "application/x-shockwave-flash" allowscriptaccess = "sameDomain" allownetworking = "all" allowfullscreen = "true" > </ embed >
- </ object >
2013年4月11日 星期四
[轉] UML4AS
在flashBuilder安裝好uml4as以後,
我們先開啟一個專案,體驗看看uml4as對於程式撰寫的幫助在哪裡吧!
0.1 下載:http://www.uml4as.com/flower-platform/download.html
0.2 安裝:不要直接丟進eclipse或是flashBuilder中,
請選擇 Help/Install New Software.../Add/Archive... 選擇剛剛下載的jar檔案來安裝
0.3建立一個新的 flex/actionScript 專案
個人測試過,目前的版本對於flexSDK4.1以上版本的支援度還有問題,
使用flexSDK4.1以後,要修改的程式碼不會比flexSDK3.5來的少,
所以我們就選擇舊版的flex3.6SDK
至於專案的名稱就取名UMLModel
1.建立一個新的UML4AS模型
建立好flex projext以後,我們在裡面建立一個新的資料夾,
在專案上按滑鼠右鍵,選擇 New/Folder
這資料夾主要要放的檔案就是等等要設計的uml圖表.
然後我們在umlModel這資料夾按滑鼠右鍵,再選擇 New/Other/Flower Modeling Platform/UML4AS File,
這時候會跳出對話視窗,取好 UML4AS 用來放置各種不同uml圖表的專案檔,
我把這uml專案檔取名為simple-mvc
這邊要選擇和flex專案要同步的資料夾,如果沒有經過特殊修改的話,通常預設就是src這資料夾.
至於flexSDK版本只有兩種能選,一個是3.5一個是4.1,我們這裡選擇flex SDK 3.5.
選擇完成以後,專案的資料夾應該如圖所示
2.專案總管
如果沒有辦法看到上述的圖,
可以到這邊去找 Window/Show View/Other/General/Project Explorer
這和flashbuilder裡面的Package Explorer 雖然長的很像,但是實際上是不同東西的!!
不過比較快速的方式,就是直接從flashBuilder右上方直接切換 Perspective 為 Flower Moding perspective
在 Project Explorer 中,展開 simple-mvc.uml4as ,可以發現有一個 Root 的資料夾,
然後在這邊建立一個新的Class Diagram,等等就是要在這邊去做uml圖表的規劃
建立好 Class Diagram , 我取名為 Diagram-mvc,點兩下開啟他,就會直接進入uml圖表的編輯模式了.
3.uml class
我們選擇右邊的工具列的class,
然後在uml圖裡面拉一個框框,這時候會跳出對話視窗.
要注意一下class的相對位置是不是在Root.src,如果不是的話要改位置,
不然會沒辦法同步成功.
我們先做好Model這個class,然後儲存.
如果正常的話,這時候專案總管應該會出現Model.as
儲存前:
儲存後:
如果這一步正常的話,我們再繼續製作其他的class,
把simple-mvc的基本三個class都完成
4.class添加屬性與方法
打上屬性的名稱,最前面的符號
-表示private
+表示public
當然,變數後面的:要記得填入型別
我們在model裡面,設一個_totals:int的變數後,並且給他設定好set與get
然後我們再選擇右邊工具列的
設定一下彼此間的關聯關係
實際上我除了變數名稱外,其他的部分都用預設值
至於加入方法的方式和加入屬性的方式一樣,不同的只是填入的位置是下半欄
再加入方法的時候,相關參數他也會有程式碼提示.
我們再一個LabelView是用來顯示Label內容用的
選好繼承用的鍵頭,讓LabelView繼承View
一樣用拖曳的方式,拉好以後完成
目前階段,整個架構大約像這樣
5.加入已經完成的類別
雖然做好了mvc架構,不過我們還差一個主要運作的起始檔案
至於起始檔案已經有了,就是UMLModel.mxml這個檔案,
只要src原本有的class,正常情況下應該會出現在uml4as的資源當中,
只要把這檔案拖曳到uml繪製區內就可以做uml編輯了
至於設定彼此間的關聯性和之前一樣
用這鍵頭拖曳一下,寫一下變數名稱就好了!
6.不完美的uml4as
儲存完以後,我們會發現as檔案居然會出現問題.
我們仔細看一下程式碼,
原來uml4as並沒有幫我們把function的回傳值加上去,
另外美中不足的是,set get的方法,他的參數都是用預設的,
和我自己的撰寫習慣略有不同,可惜還沒有地方可以調整.
不過uml4as的uml編輯,是雙向同步的,在程式碼直接編輯的話,是可以直接同步到uml圖表中的,
不過至少simpleMVC的架構都已經完成
然後我們就繼續補完程式碼~!
當然還是可以從uml4as中去設定
比方說model的靜態事件名稱.
最終uml完成圖
我們先開啟一個專案,體驗看看uml4as對於程式撰寫的幫助在哪裡吧!
0.1 下載:http://www.uml4as.com/flower-platform/download.html
0.2 安裝:不要直接丟進eclipse或是flashBuilder中,
請選擇 Help/Install New Software.../Add/Archive... 選擇剛剛下載的jar檔案來安裝
0.3建立一個新的 flex/actionScript 專案
個人測試過,目前的版本對於flexSDK4.1以上版本的支援度還有問題,
使用flexSDK4.1以後,要修改的程式碼不會比flexSDK3.5來的少,
所以我們就選擇舊版的flex3.6SDK
至於專案的名稱就取名UMLModel
1.建立一個新的UML4AS模型
建立好flex projext以後,我們在裡面建立一個新的資料夾,
在專案上按滑鼠右鍵,選擇 New/Folder
這資料夾主要要放的檔案就是等等要設計的uml圖表.
然後我們在umlModel這資料夾按滑鼠右鍵,再選擇 New/Other/Flower Modeling Platform/UML4AS File,
這時候會跳出對話視窗,取好 UML4AS 用來放置各種不同uml圖表的專案檔,
我把這uml專案檔取名為simple-mvc
這邊要選擇和flex專案要同步的資料夾,如果沒有經過特殊修改的話,通常預設就是src這資料夾.
至於flexSDK版本只有兩種能選,一個是3.5一個是4.1,我們這裡選擇flex SDK 3.5.
選擇完成以後,專案的資料夾應該如圖所示
2.專案總管
如果沒有辦法看到上述的圖,
可以到這邊去找 Window/Show View/Other/General/Project Explorer
這和flashbuilder裡面的Package Explorer 雖然長的很像,但是實際上是不同東西的!!
不過比較快速的方式,就是直接從flashBuilder右上方直接切換 Perspective 為 Flower Moding perspective
在 Project Explorer 中,展開 simple-mvc.uml4as ,可以發現有一個 Root 的資料夾,
然後在這邊建立一個新的Class Diagram,等等就是要在這邊去做uml圖表的規劃
建立好 Class Diagram , 我取名為 Diagram-mvc,點兩下開啟他,就會直接進入uml圖表的編輯模式了.
3.uml class
我們選擇右邊的工具列的class,
然後在uml圖裡面拉一個框框,這時候會跳出對話視窗.
要注意一下class的相對位置是不是在Root.src,如果不是的話要改位置,
不然會沒辦法同步成功.
我們先做好Model這個class,然後儲存.
如果正常的話,這時候專案總管應該會出現Model.as
儲存前:
儲存後:
如果這一步正常的話,我們再繼續製作其他的class,
把simple-mvc的基本三個class都完成
4.class添加屬性與方法
打上屬性的名稱,最前面的符號
-表示private
+表示public
當然,變數後面的:要記得填入型別
我們在model裡面,設一個_totals:int的變數後,並且給他設定好set與get
然後我們再選擇右邊工具列的
設定一下彼此間的關聯關係
實際上我除了變數名稱外,其他的部分都用預設值
至於加入方法的方式和加入屬性的方式一樣,不同的只是填入的位置是下半欄
再加入方法的時候,相關參數他也會有程式碼提示.
我們再一個LabelView是用來顯示Label內容用的
選好繼承用的鍵頭,讓LabelView繼承View
一樣用拖曳的方式,拉好以後完成
目前階段,整個架構大約像這樣
5.加入已經完成的類別
雖然做好了mvc架構,不過我們還差一個主要運作的起始檔案
至於起始檔案已經有了,就是UMLModel.mxml這個檔案,
只要src原本有的class,正常情況下應該會出現在uml4as的資源當中,
只要把這檔案拖曳到uml繪製區內就可以做uml編輯了
至於設定彼此間的關聯性和之前一樣
用這鍵頭拖曳一下,寫一下變數名稱就好了!
6.不完美的uml4as
儲存完以後,我們會發現as檔案居然會出現問題.
我們仔細看一下程式碼,
原來uml4as並沒有幫我們把function的回傳值加上去,
另外美中不足的是,set get的方法,他的參數都是用預設的,
和我自己的撰寫習慣略有不同,可惜還沒有地方可以調整.
不過uml4as的uml編輯,是雙向同步的,在程式碼直接編輯的話,是可以直接同步到uml圖表中的,
不過至少simpleMVC的架構都已經完成
然後我們就繼續補完程式碼~!
當然還是可以從uml4as中去設定
比方說model的靜態事件名稱.
最終uml完成圖
訂閱:
文章 (Atom)