0

我需要一些帮助,我需要一个 TileList,它的第一个位置/项目有一个按钮,在所有其他项目中每个都有一个图像。好吧,在塑料主题和 s:List 出现问题(滚动条列表的问题)之后,我放弃了并开始使用 TileList。我正在为 TileList 使用自定义项目渲染器。这很简单,但我认为我做错了什么。

ArrayCollection 中TileList 的dataProvider 由String 类第一项组成,其他都是扩展Image 类的自定义类。比如:arr=["bt",Image,Image.....];

我不知道为什么,但我的 TileList 在其第一个项目中显示正确的按钮,但之后它显示更多的 2 个项目图像,然后是带有正确图像但带有按钮的第四个项目,它是一种模式....在 3 个正确的项目之后,下一个带有一个按钮....

我的自定义 ItemRenderer:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"

     horizontalAlign="center"
     verticalAlign="middle"
     creationComplete="init()">
<mx:Script>
    <![CDATA[
        import mx.controls.Button;
    protected function init():void
    {
        if(this.data == "bt")
        {
            var bt:Button = new Button();
            bt.id = "btEnviar";
            bt.width=84;
            bt.height=28;
            bt.label = "Enviar Fotos"; 
            addElement(bt);

        }

    }
    ]]>
</mx:Script>
<mx:Image id="img" source = "{data}"/>

如果有人可以提供帮助,我真的很感激......我在互联网上没有找到任何关于它的信息。

谢谢!

4

1 回答 1

0

似乎是一个虚拟布局问题。这意味着渲染器被重用。如果它们没有重新初始化(例如:删除你的 bt 元素),可能会发生这样的事情。另外,我建议您覆盖公共函数 data(value:Object):void 并将您的代码放在那里。如果你真的想要,你也可以禁用虚拟布局(在你的数据组/列表上使用虚拟布局 = false)。

目前我没有太多时间来解释它,但我建议您查看 DataGroup 的 itemRendererFunction 属性。此函数返回一个 ClassFactory,它根据数据定义要使用的项目渲染器的类型。

这是来自 Adob​​e 参考的链接:使用项目渲染器。请参阅“将项目渲染器函数与 Spark 容器一起使用”部分。

于 2012-02-09T15:52:55.687 回答