Flex如何使用ItemRenderer绝对定位项目
我正在尝试使用List组件创建一个项目的网格。 我有一个数据源,其中包含网格中每个项目的positionX和positionY值。 数据源还标识网格中每个项目的项目类型,并且我想根据类型用不同的方式显示每个项目。
我创建了一个背景图形,例如600px x 600px。 列表放置在背景图形的顶部,并设置为相同的大小。
我创建了以下ItemRenderer,并将其设置为List的itemRenderer:
<s:ItemRenderer
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
autoDrawBackground="true"
useHandCursor="true"
buttonMode="true"
mouseChildren="false"
width="100%" height="100%">
<!-- Use the data property to access the data passed to the item renderer. -->
<s:Group
id="locationGroup"
x="{data.positionX}" y="{data.positionY}"
width="23.058" height="23.058">
<s:RichText
text="{data.rowIdent}, {data.columnIdent}"
styleName="bodyStyle"/>
</s:Group>
</s:ItemRenderer>
列表继续希望将每个listItem放在行中。 任何人都可以告诉我如何让每个listItem根据它的数据源属性自由定位吗?
谢谢
我创建了一个简单但有效的ItemRenderer来实现我的目标,并且我想分享它。 代码如下:
<s:ItemRenderer
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
autoDrawBackground="true"
useHandCursor="true"
buttonMode="true"
mouseChildren="false"
width="23.058" height="23.058">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import vo.VoLocation;
override public function set data( value:Object ) : void {
super.data = value;
// Check to see if the data property is null.
if (value== null)
return;
// If the data property is not null.
var _location:Array = value as Array; // Cast the 'value' to an Array data type.
this.x = _location[1];
this.y = _location[2];
detailsRichText.text = _location[1];
}
]]>
</fx:Script>
<!-- Use the data property to access the data passed to the item renderer. -->
<!-- Each Tile is 23.058px -->
<s:Group
id="locationGroup">
<s:Rect width="100%" height="100%">
<s:fill>
<s:SolidColor color="0xf0ffff" />
</s:fill>
</s:Rect>
<s:RichText
id="detailsRichText"
fontSize="4"/>
</s:Group>
</s:ItemRenderer>
那么为什么要使用列表? 那么我曾经有过类似的场景,使用WPF,我使用了一个List,它工作得很好。 如上所见,我的数据源中的每个项目都表示为一个单独的ItemRenderer对象,并且每个项目都使用positionX和positionY值进行定位。 通过使用列表,我可以获得所有事件,例如鼠标事件,选定的项目等等。
希望能帮助到你。
链接地址: http://www.djcxy.com/p/34649.html上一篇: How Can Flex List Items be Positioned Absolutely Using an ItemRenderer