1

我在渲染器类中有一个图像,如果我单击图像,我需要将一个事件发送到 flex 中的主 mxml 页面。

在渲染器类中:-

public function clickOnMoreImage(event:Event):void {                
    var moreImageEvent:Event = new Event("clickOnMoreImage");
    var parent:EventDispatcher = parentDocument.parentDocument as EventDispatcher;
    if (parent != null) {
        parent.dispatchEvent(moreImageEvent);
    }
}


<mx:Image id="imgStatus" buttonMode="true" useHandCursor="true" click="clickOnMoreImage(event)" />

父类:-

this.addEventListener("clickOnMoreImage", showMoreImagePopUpData);

public function showMoreImagePopUpData(event:Event):void {
    Alert.show("clicked on More Image");
}

这是行不通的。我可以知道任何解决方法吗?

4

1 回答 1

3
  1. 在这种情况下不要使用parentor 。parentDocument您无法确定渲染器与顶级应用程序的嵌套级别。
  2. “Flex”方式是使用事件冒泡

通过渲染器本身调度事件(bubbles设置为true)。它会在舞台上“冒泡”(如果渲染器不是弹出窗口的子级),因此您可以在渲染器的任何父级中收听它(例如 -> DataGroup -> List -> Application -> SystemManager ->阶段)。

var moreImageEvent:Event = new Event("clickOnMoreImage", true); //2nd parameter "true"
dispatchEvent(moreImageEvent);
于 2012-05-03T14:31:54.290 回答