2009-07-07 82 views
2

所以,我在AS3中构建东西,我有一个主要的影片剪辑,并且我有一组导航要显示两次(一个是常规侧栏设置,另一个是一个奇特的设计师下滑的东西)。当一个人被点击时,另一个人应该反应以反映发生的事情。OOP:最好的做法:让两个班互相交谈

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

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

回答

4

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

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

两个Layouts都应该对同一个PlayingStatus数据进行引用。当一个布局修改了PlayingStatus时,当它改变时,PlayingStatus类可以为每个属性引发一个事件(不管这些事件是什么)。这两个布局都会监听这些事件并在到达时重新绘制自己。

+1

+1对于模型 - 视图 - 控制器。 – Sean 2009-07-07 03:01:11

2

我建议你去事件听众和调度员。如果您的事件冒泡(并且您将侦听器的范围设置为“冒泡路径”),则不需要从任一按钮到另一个按钮的直接引用。

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