【问题标题】:Display multiple images in a AS3 DataGrid在 AS3 DataGrid 中显示多个图像
【发布时间】:2014-07-25 05:25:55
【问题描述】:

我需要在数据网格中显示多个图像,但不知道如何。我能够显示一个实现 ICellRenderer 的图像。 自从 ICellRenderer 在 DataProvider 中查找数据键并显示它以来,我一直无法弄清楚如何多次显示。

是否可以使用不同类型的 DataProvider 或可以实现的不同接口?

这是我用于加载图像的代码:

package {
// Import the required component classes.
import fl.containers.UILoader;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import fl.core.InvalidationType;
import fl.data.DataProvider;
import flash.events.Event;

/**
 * This class creates a custom cell renderer which displays an image in a cell.
 * Make sure the class is marked "public" and in the case of our custom cell renderer, 
 * extends the UILoader class and implements the ICellRenderer interface.
 */
public class LoaderCellRenderer extends UILoader implements ICellRenderer {
    protected var _data:Object;
    protected var _listData:ListData;
    protected var _selected:Boolean;

    /**
     * Constructor.
     */
    public function LoaderCellRenderer():void {
        super();
    }

    /**
     * Gets or sets the cell's internal _data property.
     */
    public function get data():Object {
        return _data;
    }
    /** 
     * @private (setter)
     */
    public function set data(value:Object):void {
        _data = value;
        source = value.data;
    }

    /**
     * Gets or sets the cell's internal _listData property.
     */
    public function get listData():ListData {
        return _listData;
    }
    /**
     * @private (setter)
     */
    public function set listData(value:ListData):void {
        _listData = value;
        invalidate(InvalidationType.DATA);
        invalidate(InvalidationType.STATE);
    }

    /**
     * Gets or sets the cell's internal _selected property.
     */
    public function get selected():Boolean {
        return _selected;
    }
    /**
     * @private (setter)
     */
    public function set selected(value:Boolean):void {
        _selected = value;
        invalidate(InvalidationType.STATE);
    }

    /**
     * Sets the internal mouse state.
     */
    public function setMouseState(state:String):void {
    }
}

}

【问题讨论】:

  • 找到了答案。在设置器中,如果我将 value.data 更改为 value.myotherimagekeyname 它工作正常。

标签: actionscript-3 datagrid


【解决方案1】:

您想在一个单元格中显示多张图片吗? 您应该使用自定义 GridItemRenderer:

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">

 <fx:Script>
    <![CDATA[
        override public function prepare(hasBeenRecycled:Boolean):void {
            img1.source = data.image1Source;
            img2.source = data.image2Source;
        }
    ]]>
 </fx:Script>

 <s:HGroup>
    <s:Image id="img1" />
    <s:Image id="img2" />
 </s:HGroup>    
</s:GridItemRenderer>

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 2021-08-26
    • 1970-01-01
    • 2015-03-03
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多