4,328
社区成员
发帖
与我相关
我的任务
分享
package renderers
{
import mx.controls.AdvancedDataGrid;
import mx.controls.Image;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.IDataRenderer;
import mx.core.UIComponent;
import mx.events.FlexEvent;
public class MyItemRenderer extends UIComponent implements IListItemRenderer, IDropInListItemRenderer,IDataRenderer
{
public function MyItemRenderer()
{
super();
}
/*
* 创建子组件,并设置样式及可见性等
*/
override protected function createChildren():void
{
super.createChildren();
// 增加子组件
}
private var _data:Object;
[Bindable("dataChange")]
public function get data():Object
{ //trace("data:"+_data);
return _data;
}
/*
* 在这个方法中调用invalidateProperties(),是为了在适当的时候调用commitProperties()
* 进行数据显示设置以及组件的可见性。
* 派发事件,并由get data()监听,是为了数据源的绑定。
*/
public function set data(value:Object):void
{
trace("setData"+_data);
_data=value;
//img=new Image();
trace("value:"+_data.thumbnailImage);
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
invalidateProperties();
}
/*
* 在这个方法中进行数据设置。当然,也可以在set data()中进行,不过可能会有不妥的时候吧
*/
override protected function commitProperties():void
{
//trace("commitProperties");
super.commitProperties();
// 获取列设置信息
//var field:String = (listData as DataGridListData).dataField;
// lbl.text = data[field];
}
/*
* 在这个方法中对子元素进行定位和设置大小,默认大小为0×0
*/
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
//trace("updateDisplayList");
super.updateDisplayList(unscaledWidth, unscaledHeight);
trace("宽度:"+unscaledWidth);
//lbl.move(0, 0);
//lbl.setActualSize(unscaledWidth, unscaledHeight);
}
/*
*
*/
override protected function measure():void
{
//trace("measure");
super.measure();
// 如果AdvancedDataGrid的variableRowHeight="true"应该实现该方法,以提供合适的宽高
}
private var _listData:BaseListData;
public function get listData():BaseListData
{
return _listData;
}
public function set listData(value:BaseListData):void
{
_listData=value;
trace("listData:"+_listData);
}
}
}
<mx:HorizontalList id="horizontalList2" visible="true"
labelField="label"
iconField="thumbnailImage"
dataProvider="{arr}"
columnCount="4"
rowCount="1"
variableRowHeight = "true"
horizontalScrollPolicy="on" x="7" y="26" width="450" height="155">
<mx:itemRenderer>
<fx:Component>
<map:MyItemRenderer>
<mx:Image source="{data.thumbnailImage}"/>
</map:MyItemRenderer>
</fx:Component>
</mx:itemRenderer>
</mx:HorizontalList>
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/02/15/creating-a-simple-image-gallery-with-the-flex-horizontallist-control/ -->
<map:MyItemRenderer width="126" height="100" xmlns:map="renderers.*" xmlns:mx="http://www.adobe.com/2006/mxml" >
<mx:Image id="imgg" source="{data.thumbnailImage}" />
<mx:Label id="l1" text="{data.label}" />
</map:MyItemRenderer>
<mx:HorizontalList id="horizontalList2" visible="true"
labelField="label"
iconField="thumbnailImage"
dataProvider="{arr}"
columnCount="4"
rowCount="1" itemRenderer="MyitemRenderer"
variableRowHeight = "true"
horizontalScrollPolicy="on" x="7" y="26" width="450" height="155">
</mx:HorizontalList>
package MyImage
{
import mx.controls.AdvancedDataGrid;
import mx.controls.Image;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
import mx.controls.listClasses.IDropInListItemRenderer;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.IDataRenderer;
import mx.core.UIComponent;
import mx.events.FlexEvent;
import spark.components.Scroller;
public class MyItemRenderer2 extends UIComponent implements IListItemRenderer, IDropInListItemRenderer,IDataRenderer
{
private var image:Image;
public function MyItemRenderer2()
{
super();
}
/*
* 创建子组件,并设置样式及可见性等
*/
override protected function createChildren():void
{
super.createChildren();
image = new Image();
addChild(image);
// 增加子组件
}
private var _data:Object;
[Bindable("dataChange")]
public function get data():Object
{ //trace("data:"+_data);
return _data;
}
/*
* 在这个方法中调用invalidateProperties(),是为了在适当的时候调用commitProperties()
* 进行数据显示设置以及组件的可见性。
* 派发事件,并由get data()监听,是为了数据源的绑定。
*/
public function set data(value:Object):void
{
trace("setData"+_data);
_data=value;
dispatchEvent(new FlexEvent(FlexEvent.DATA_CHANGE));
invalidateProperties();
}
/*
* 在这个方法中进行数据设置。当然,也可以在set data()中进行,不过可能会有不妥的时候吧
*/
override protected function commitProperties():void
{
//trace("commitProperties");
super.commitProperties();
if(_data)
image.source = data.thumbnailImage; // 获取列设置信息
//var field:String = (listData as DataGridListData).dataField;
// lbl.text = data[field];
}
/*
* 在这个方法中对子元素进行定位和设置大小,默认大小为0×0
*/
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
//trace("updateDisplayList");
super.updateDisplayList(unscaledWidth, unscaledHeight);
trace("宽度:"+unscaledWidth);
//设置子元素的位置和大小,注意:如果没有设置,就不会显示
image.move(0,0);
image.setActualSize(image.contentWidth,image.contentHeight);
//lbl.move(0, 0);
//lbl.setActualSize(unscaledWidth, unscaledHeight);
}
/*
*
*/
override protected function measure():void
{
//trace("measure");
super.measure();
// 如果AdvancedDataGrid的variableRowHeight="true"应该实现该方法,以提供合适的宽高
}
private var _listData:BaseListData;
public function get listData():BaseListData
{
return _listData;
}
public function set listData(value:BaseListData):void
{
_listData=value;
trace("listData:"+_listData);
}
}
}
<mx:HorizontalList id="horizontalList2" visible="true"
labelField="label"
iconField="thumbnailImage"
dataProvider="{arr}"
columnCount="4"
rowCount="1"
variableRowHeight = "true"
horizontalScrollPolicy="on" x="7" y="26" width="450" height="155">
<mx:itemRenderer>
<fx:Component>
<map:MyItemRenderer2>
</map:MyItemRenderer2>
</fx:Component>
</mx:itemRenderer>
</mx:HorizontalList>