如itemRenderer是一個checkBox
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox change="changeHandler()">
<mx:Script>
<![CDATA[
import mx.events.ListEvent;
private function changeHandler():void{
this.owner.dispatchEvent(new Event("change_end"));
}
]]>
</mx:Script>
</mx:CheckBox>
</mx:Component>
</mx:itemRenderer>
//還可以將itemrenderer中的事件發送設爲冒泡模式
dispatchEvent(new Event("change_end",true,true));
===
通過自定義事件發送參數
package widgets.layerManager.proxy
{
import flash.events.Event;
public class LayerManagerEvent extends Event
{
/**
* checkbox的選擇事件
*/
public static var CHECKBOX_CLICK:String= "checkBoxClick"
/**
* checkbox的label
*/
public var checkBoxLabel:String="";
/**
* checkbox的選中狀態
*/
public var checkBoxSelected:Boolean=false;
//當itemrenderer中發送事件時,將自定義事件的冒泡功能打開,否則owner監聽不到事件
public function LayerManagerEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true)
{
super(type, bubbles, cancelable);
}
}
}
//
protected function checkBox_clickHandler(event:MouseEvent):void
{
//this.owner.dispatchEvent(new Event("checkboxClick"));
var e:LayerManagerEvent=new LayerManagerEvent(LayerManagerEvent.CHECKBOX_CLICK);
e.checkBoxLabel=checkBox.label;
e.checkBoxSelected=checkBox.selected;
dispatchEvent(e);//需要將冒泡功能打開纔可以被owner間聽到
}
//
protected function basewidget1_creationCompleteHandler(event:FlexEvent):void
{
//監聽從itemrenderer中發送的事件
tree.addEventListener(LayerManagerEvent.CHECKBOX_CLICK,treeCheckboxLayerDisplayHandler);
}
private function treeCheckboxLayerDisplayHandler(event:LayerManagerEvent):void{
//獲取checkbox對應的數據源的id值. 通過遍歷實現
var layerId:String="";
for each(var object:Object in _layerListProxy.getData()){
if(event.checkBoxLabel==object["label"]){
layerId=object["id"].toString();
//trace(object["id"].toString());
break;
}
}
IocAppFacade.getInstance().sendNotification(ConstFacade.LAYER_DISPLAY,{layerId:layerId,visible:event.checkBoxSelected});//屬性layerId=sde.SDE.***
}