OOP:最佳实践:让两个班级互相交流

时间:2009-07-07 02:32:56

标签: actionscript-3 oop

所以,我正在AS3中构建东西,我有一个主要的影片剪辑,我有一组导航要显示两次(一个是正常的侧栏设置,另一个是一个花哨的设计师滚动的东西底部)。当点击一个时,另一个应该做出反应以反映发生的事情。

main.menuA应该引用main.menuB,还是应该设置EventDispatchers和EventListeners,以便事件通过main路由?或者当我启动menuA和menuB时,我应该将menuA的引用传递给menuB而反之吗?

老实说,在这种情况下,这并不重要,但我需要阻止不良做法成为坏习惯。

2 个答案:

答案 0 :(得分:4)

最有意义的是设置事件并通过main更改相应的控件。如果你以另一种方式做到这一点,那么每个控件总是必须与另一个控件配对,他们甚至不应该彼此意识到。

但我有一点变化。 你有一个概念(PlayingStatus)。这个概念与你在屏幕上绘制它的方式无关(显然,因为你有两种方法)。我们称它们为Layout1和Layout2。

两个布局都应该保存对相同的PlayingStatus数据的引用。当一个Layout修改PlayingStatus时,PlayingStatus类可以为每个属性(无论是那些属性)引发一个事件,因为它会发生变化。两个布局都会监听这些事件,并在人们到达时重新绘制。

答案 1 :(得分:2)

我建议您选择事件监听器和调度员。如果您的事件冒泡(并且您将侦听器的范围设置为“气泡路径”),则无需从任何一个按钮直接引用另一个按钮。

确保在销毁对象时清理事件,或者(和)使用弱引用。