我正在建設一個圖形板,就像我正面臨設計問題的項目。概念性問題:鬆耦合
主類是Board,它是一個負責繪製形狀時處理鼠標事件的畫布。它還具有上下文變量,例如currentShape或snapFlag來激活柵格磁性。
爲了處理形狀的移動/大小調整/旋轉,它們繼承自名爲ObjectHandles(flex)的第三方開源工具。
我有一個baseShape擴展ObjectHandles主類來覆蓋它的一些內部函數,如onMove函數。
當創建一個形狀(鼠標向下,移動,鼠標向上)時,這是董事會處理,它知道他自己的快照標誌。
var mouseUpPoint:Point = boardCanvas.globalToLocal(new Point(event.stageX,event.stageY)); var snapMouseUpPoint = snapPoint(mouseUpPoint.x,mouseUpPoint.y);
在我的overidden onMove方法中,我希望形狀能夠意識到Board snap標誌以及它的更改時間。我該怎麼做呢 ?
我是否在我的basicShape構造函數中將參數作爲參數傳遞,以便我可以檢查snap?
我是否將標誌作爲參數傳遞,並以某種方式讓所有形狀監聽變化?
什麼是最乾淨的解決方案?
非常感謝。
實際上它沒有,它稍後收到它。使用objectHandles的每個形狀都是其選擇的自組織形式。 Objecthandles有一個selectionManager,它可以選擇/取消選擇/添加/刪除。 但是,我的主板可以知道對象何時移動。但已經太晚了。 – coulix 2008-11-24 22:00:19
事件從小孩到父母,董事會是父母。 – coulix 2008-11-24 22:02:49
嗯,說實話,我不認爲這是正確的做法。當然這是你的項目,所以你更多地瞭解這些設計選擇的成本和收益。我支持我的回答,但我期待着閱讀其他答覆。偉大的問題! – 2008-11-24 22:20:34