如何调用子组件中的函数:a)另一个子组件b)父组件,反之亦然?

时间:2012-06-16 13:43:17

标签: actionscript-3 flex adobe

我有一个父组件,比如P,它有功能,比如Pfunc。我还有两个子组件,比如C1和C2,以及它们各自的功能,比如C1func和C2func。

如何从任何组件调用任何函数?

1 个答案:

答案 0 :(得分:0)

  

如何从任何组件调用任何函数?

从封装角度来看:

你永远不应该能够调用任何组件中的任何功能。要与父组件“通信”,您应该使用事件分派。沟通;你应该调用一个函数或设置一个属性。你不应该横向沟通。

如果你想让P执行PFunc,那就执行它:

this.PFunc();

如果你想让P执行C1Func,而C1Func是公共的,那么你可以在P里面做这样的事情:

C1Instance.C1Func()

如果你想让P执行C2Func,并且C2Func是公共的,那么你可以在P里面做这样的事情:

C2Instance.C2Func()

如果你想要C1或C2来调用PFunc,那么你应该发送这样的事件:

dispatchEvent(new Event('callPFunc'));

在P中,应该有一个事件监听器,概念上是这样的:

C1Instance.addEventListener('callPFunc',onCallPFunc);

....
// elsewhere in code

protected function onCallPFunc(event:Event):void{
  PFunc();
}

如果你想让C1调用C2Func或C2来调用C1Func,那么你有点不走运。同一层次结构级别的两个组件之间不应直接交互。最好的方法是派遣一个活动;在父级中监听它,并让父级回调到备用组件。