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

下一篇: How to check/tick a CheckBox in the item renderer?