Flash 在Flex中不使用xml模式调用dispatchEvents的其他方法

Flash 在Flex中不使用xml模式调用dispatchEvents的其他方法,flash,apache-flex,actionscript,adobe,Flash,Apache Flex,Actionscript,Adobe,我想知道是否有方法在自定义事件函数调用中使用dispatchEvents,而不实际以xml形式实例化函数,而是在脚本中进行实例化。我想做的是,让开发人员使用我的自定义组件按钮,但将他/她自己的功能添加到已经添加到我自己的单击事件调用中的功能中。因此,作为一个案例,他/她希望添加点击事件的验证功能。一种方法是在xml模式中的组件中创建一个实例。例如,我将其放在以下位置: 我有一个名为DialogWindow.mxml的mxml组件,里面有 <mx:Metadata> [Ev

我想知道是否有方法在自定义事件函数调用中使用dispatchEvents,而不实际以xml形式实例化函数,而是在脚本中进行实例化。我想做的是,让开发人员使用我的自定义组件按钮,但将他/她自己的功能添加到已经添加到我自己的单击事件调用中的功能中。因此,作为一个案例,他/她希望添加点击事件的验证功能。一种方法是在xml模式中的组件中创建一个实例。例如,我将其放在以下位置:

我有一个名为DialogWindow.mxml的mxml组件,里面有

  <mx:Metadata>
    [Event(name="cancBtnClick", type="flash.events.Event")]
    [Event(name="okBtnClick", type="flash.events.Event")]
  </mx:Metadata>
在“cancelAction”函数中,我将dispatchEvent添加到CancbtClick,因为这将是用户定义的函数

  protected function cancelAction(event:Event):void {
dispatchEvent(new Event("cancBtnClick"));
PopUpManager.removePopUp(this);
  }
  // from TestButton.mxml
  <cmp:DialogWindow cancBthClick="myFunction()" />
从另一个组件派生组件DialogWindow.mxml时,我可以在myFunction代替cancBtnClick in cancelAction函数的地方使用此语句

  protected function cancelAction(event:Event):void {
dispatchEvent(new Event("cancBtnClick"));
PopUpManager.removePopUp(this);
  }
  // from TestButton.mxml
  <cmp:DialogWindow cancBthClick="myFunction()" />

当尝试这一点时,当然没有CancbtClick。所以我知道我没有正确地实现这一点。如果您知道如何更改代码,以便我可以执行上述操作。我将非常感激。提前感谢。

在对话框窗口中,您可以定义属性

public function set cancBtnClick(func : Function) : void
{
    addEventListener("cancBtnClick", func);
}
然后按你的意愿使用它

(dialogW as DialogWindow).cancBtnClick = myFunction;
希望它能帮助您。

您需要:

(dialogW as DialogWindow).addEventListener("cancBtnClick", yourFunction);

public function yourFunction(event:Event):void {
  // handle the event.
}
在完成后删除侦听器也是一种很好的做法

(dialogW as DialogWindow).removeEventListener("cancBtnClick", yourFunction);