如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.***
}