我正在開發先進的模塊化GUI系統。我需要它儘可能地靈活,並希望儘可能多的人有用(但它將是合理的利基)。圖形用戶界面 - 調用setters或調度事件?
我的設計是導致我想到的組成部分,是如何各組件應與最好的應用程序的互動。
我看到兩種方法:
- 傳遞一個二傳手,對其中的部分應當在採取行動的類別和名稱。如果需要,這仍然允許從setter中派發事件。
- 傳遞組件應該派發的CustomEvent以及相關數據。儘管我覺得這可能會導致很多事件監聽器,並且會帶來額外的複雜性。
但是什麼是最佳實踐?每個的優缺點是什麼?有更好的方法嗎?
基本例如:
public class Button extends Sprite { private var _property:String; private var _object:*; public function Button(label:String, object:*, property:String) { _property = property; _object = object; addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void { _object[_property] = "Changed"; } }
基本示例:
public class Button extends Sprite { private var _event:GuiEvent; public function Button(label:String, event:GuiEvent) { _event = event; addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void { dispatchEvent(new GuiEvent(_event.type, "Changed")); } }
我會使用選項1(綁定)編輯器(如列表,輸入字段和這樣的元素)和按鈕的事件或方法關閉。我爲DataBinding重新構建了一個小型的聊天工具,你可以在這裏查看:http://turbosqel.pl/mix/。事件是好的,但需要更多的代碼,更難以改變。 – turbosqel 2012-04-12 10:42:54
是的,我看到一些gui框架使用這種系統 – davivid 2012-04-12 17:46:31