0

我需要在我cell renderer的一个项目中实现一个自定义,我在谷歌上做了一些搜索,但找不到我需要的东西。

我需要cell在每个tile list显示 2 个图标和几个labels. 我需要一个很好的例子来开始它。

如果可能的话,我需要一种方法将模板设计为 aMovieClip并将其传递给 tilelist 以呈现单元格。

4

2 回答 2

0

要构建自定义单元格渲染器,您需要从可用的listClasses中扩展一个选择的类。ImageCell看起来是您项目的良好开端。

你会:

  1. 扩展列表类
  2. 在(标签/文本字段等)中添加您自己的位
  3. 覆盖受保护的函数以根据您的需要调整新 Cell(例如 drawLayout 方法,您需要在其中整齐地放置项目)。

这是一个非常基本的示例:

package
{
    import fl.controls.listClasses.ICellRenderer;
    import fl.controls.listClasses.ImageCell;
    import fl.controls.TileList;
    import fl.data.DataProvider;
    import fl.managers.StyleManager;
    import flash.events.EventDispatcher;
    import flash.events.*;
    import fl.containers.UILoader;

    public class CustomImageCell extends ImageCell implements ICellRenderer
    {  

        public function CustomImageCell() 
        {
            super();

            //do other stuff here

            loader.scaleContent = false;
            loader.addEventListener(IOErrorEvent.IO_ERROR, handleErrorEvent, false, 0, true);

            useHandCursor = true;
        }

        override protected function drawLayout():void
        {
            var imagePadding:Number = getStyleValue("imagePadding") as Number;
            loader.move(11, 5);

            var w:Number = width-(imagePadding*2);
            var h:Number = height-imagePadding*2;
            if (loader.width != w && loader.height != h)
            {
                loader.setSize(w,h);
            }
            loader.drawNow(); // Force validation!

        }
        override protected function handleErrorEvent(event:IOErrorEvent):void {
            trace('ioError: ' + event);
            //dispatchEvent(event);
        }
    }
}

你需要的一个很好的例子是这篇文章。那里提供的自定义单元格:

  1. 支持自定义背景(通过设置单元格皮肤)
  2. 使用标签 TextField。

高温高压

于 2010-07-12T14:12:19.203 回答
-2

创建一个名为 MyRenderer.mxml 的文件,粘贴:

<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Image id="img" width="123" height="123" />
<mx:Script><![CDATA[
override public function set data (value:Object):void {
    super.data = value;
    // mess with img here
}
]]></mx:Script>
</mx:Box>

在平铺列表中,写下:

<mx:TileList itemRenderer="MyRenderer" ... />
于 2010-07-12T13:39:41.363 回答