【问题标题】:Flex - Tilelist with first item as Button and all others as ImageFlex - Tilelist 第一项为按钮,所有其他项为图像
【发布时间】:2012-02-09 14:50:57
【问题描述】:

我需要帮助 我需要一个 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}"/>

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

谢谢!

【问题讨论】:

  • 您是否尝试过覆盖 commitProperties() 并在那里添加代码而不是使用初始化事件?
  • 没什么 =/ 真的很糟糕,现在第一项出现了 2 个按钮
  • 我真的认为你做错了什么。首先,请 100% 确定您了解渲染机制。听起来很无聊,但您总会遇到项目渲染器问题。

标签: apache-flex itemrenderer tilelist


【解决方案1】:

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

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

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

【讨论】:

  • 正如 Exort 所说,项目渲染器将被重新使用,因此重要的是要考虑this.data != "bt" 会发生什么。理想情况下,添加一个 else 语句来检查按钮是否存在并从显示中删除。另一种选择是向渲染器添加状态并在设置数据时显式更改状态。即if(this.data == "bt"){this.currentState = "button"} else {this.currentState = "image" }
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 2021-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多