爲什麼在Flex中,模式背後的代碼是使用Actionscript類作爲基類,而不是使用MXML組件?
我的意思是,爲什麼我們不把我們的MXML擴展到一個新的AS3類中,而不是將我們的AS3代碼擴展到類的後面?
使用這種方法看起來更自然,因爲是真正的延伸,我們加入的代碼和功能給我們的MXML基地。
使用落後模式的代碼是一個黑客以OOP,我們每次將組件添加到我們的MXML我們需要修改我們的AS3上課時間,也就是說,如果我們修改子(MXML),我們需要修改父(AS3)太。
背後的代碼有什麼問題(「前面的代碼」?)?Flex中的背後代碼
回答
「代碼在前面」是一個更自然的延伸和麪向對象的設計,因爲我們是在AS3功能擴展我們的MXML和我們並不需要每次我們改變我們的孩子的時間來改變我們的父母。
但它有一個proble,我們不能在MXML因爲現在我們的MXML是我們的基類,我們有我們的var /功能在AS3子類使用綁定。
編輯:在前面代碼中的另一個問題是,你不能看到在設計模式的「AS3 componente」(在FB4沒有測試+也許它的工作現在)。更多關於這個閱讀馬克休斯的答覆。
這就是那種爲什麼的Adobe決定重新設計它的組件體系結構和創建的Spark組件集和根據剝皮機制。
在這個新的(-ish)理念,您創建一個擴展SkinnableComponent或者SkinnableContainer,在其中你描述你的組件的行爲的ActionScript類。然後,您可以在MXML中創建一個定義您的組件的外觀類(可能還有一些視覺行爲,但沒有該組件的基本行爲)。
這樣就可以清楚地區分顧慮。這不是與代碼隱藏的相反,但它是一種不同的方法,一旦你掌握了它就可以很好地工作。
我認爲這是繼承自Flash時代的遺留組件體系結構,您將在黑盒子組件中拖動,並最多在皮膚顏色/形狀/字體級別上擺弄一下, t(不能)觸及它的工作原理。
背後流行的主要原因是工具。您無法在Flex Builder 3設計環境中拖動基於AS3的組件。我嘗試了各種解決方法,但都是有問題的。事實上,這是我這輩子的博客上講述的第一件事: http://www.rogue-development.com/blog2/2007/03/code-in-front/
在Flash Builder 4,我沒有再試過這主要是因爲,從那時起,我來實現的柔性佈局工具廢話,我很少使用它。因此,我最近的發展都是代碼先行。
如果您需要綁定到MXML中的一個變量,您可以在MXML中定義該變量,然後通過繼承您的子類。
我不是一個單皮膚組件的火花蒙皮巨大的粉絲。如果你有一個組件只有一個視覺效果,前面的代碼更容易開發。(對於需要多個皮膚的組件,皮膚是完美的)
哇!感謝馬克,我現在並不孤單:)。設計視圖也是一個額外的問題,我不知道(無論如何,我還沒有在FB4中測試過)。 Bue我認爲最重要的是綁定,如果您需要在MXML中定義綁定它們的變量,那麼如果需要綁定一些,則需要將MX添加到MXML(這正是我們試圖避免的)吸氣。我認爲這兩個原因足以讓代碼存在,並且不會在前面使用代碼。如果你想在前面使用代碼,使用meadiators是一種更好的模式(我正在使用它,但我很好奇爲什麼Adobe會提出代碼)。 – Enrique 2011-06-04 16:14:18
- 1. Streamsets代碼背後
- 2. 創建代碼背後的代碼
- 3. 更改背後的代碼
- 4. 在C#中使用的代碼背後
- 5. 從代碼變化背後
- 6. 在代碼背後的代碼中使用工作Sitecore查詢
- 7. flex中的konami代碼
- 8. 的Flex,XML後代
- 9. 在C#代碼中編寫SQLdatasource以使用代碼背後的代碼
- 10. DropDownList的不運行的代碼背後
- 11. 訂購代碼設置DataContext的背後
- 12. 代碼背後的綁定屬性
- 13. JavaScript代碼背後的硒「clickAt()」方法?
- 14. 顯示標記的代碼背後
- 15. 作品背後的代碼,但MVVM不
- 16. c代碼背後的訪問按鈕#
- 17. 改變從代碼的ControlTemplate背後
- 18. 從代碼背後的Gridview Eval函數
- 19. 談起的iFrame從ASP.NET代碼背後
- 20. 無法訪問的代碼背後
- 21. 隱藏代碼背後的div元素
- 22. 天問題背後的代碼日曆
- 23. 從代碼背後的樣式
- 24. Ajaxify RadGrid和代碼背後的標籤
- 25. ASP.NET MVC - 主頁背後的代碼
- 26. 生成的代碼背後引發System.ArgumentNullException
- 27. 自定義代碼背後的DataSet
- 28. 通過代碼創建的RequiredFieldValidator背後
- 29. 從類背後的代碼訪問textarea
- 30. 獲取代碼背後的代碼的字體屬性
是的,但爲什麼Adobe提出代碼而不是「代碼在前面」?以及爲什麼沒有人使用這種方法(至少我沒有看到它在任何教程/指南)。我的意思是,爲什麼「前面的代碼」模式不存在?它出什麼問題了?我沒有使用代碼,我想我也不會使用「前面的代碼」,但我很好奇爲什麼沒有人提出它像解決方案(甚至比代碼更好)。 – Enrique 2011-06-01 23:21:16
在我看來,無論你是在後面還是在前面編碼,無論如何這兩個類都緊密耦合。使用這兩種方法的唯一原因是將您的MXML代碼與AS代碼分開。這與分離關注無關,它只是讓你的類更具可讀性。 – RIAstar 2011-06-01 23:37:25
是的,但前面的代碼是一個真正的擴展,後面的代碼不是。我們有一個純視圖類MXML和一個純粹的AS3類,它擴展了MXML,因此,這兩個類都是可用的,沒有MXML的情況下,AS3類(base)背後的代碼是沒有用的,如果你改變了你的子元素MXML)你也需要改變你的父母(AS3)!也許我沒有解釋得很好,但我認爲必須有選擇代碼的原因,而不是前面的代碼,這不是任意的,而是一種設計模式。前面的代碼必須有問題/缺點,但我看不到它。 – Enrique 2011-06-02 03:24:33