2012-05-03 15 views
1

我有一個渲染器類中的圖像,如果我點擊圖像,我需要調度一個事件到Flex的主要mxml頁面。點擊圖像調度flex中的事件

渲染器類: -

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"); 
} 

這是行不通的。我能爲此知道任何工作嗎?

+0

嘗試http://stackoverflow.com/questions/7193665/spark-list-with-buttons/7193979#7193979 – RIAstar

回答

3
  1. 在這種情況下請勿使用parentparentDocument。您無法確定您的渲染器對頂級應用程序的嵌套級別。
  2. 「Flex」的方式是使用event bubbling

由渲染器本身派發事件(其中bubbles設置爲true)。它會「冒泡」(如果渲染器不是彈出窗口的子節點),因此您可以在渲染器的任何父級(例如 - > DataGroup - > List - > Application - > SystemManager - >階段)。

var moreImageEvent:Event = new Event("clickOnMoreImage", true); //2nd parameter "true" 
dispatchEvent(moreImageEvent);