【问题标题】:Flex TileList control, image loading issueFlex TileList 控件,图片加载问题
【发布时间】:2009-11-18 23:35:10
【问题描述】:

我有一个 flex 3 TileList,其中加载了几张图片(员工的头像)。

我在 TileList 中加载的图像存储在数据库中(我使用 ByteArray 类和 Base 64 编码将图像存储在数据库中)。

当我从数据库加载 TileList 中的图像时,它们可以正确显示,但是当我在 TileList 中向下滚动并再次向上滚动时,图像的位置正在发生变化,例如图像在第一位置现在可以在第三等等......

有人知道怎么解决吗?

提前致谢!

PS : 这是 TileList 的 ItemRenderer 的代码

私有函数init():void { img.load(data.imageData); }

]]>

【问题讨论】:

    标签: apache-flex image caching refresh tilelist


    【解决方案1】:

    问题在于 Flex 中的列表类型组件使用渲染器池(即:当您滚动时,相同的渲染器被重用于不同的项目)。由于我猜您的 init 方法仅在 creationComplete 或渲染器生命周期开始时调用,因此更改数据不会更改图像。

    您可以改为覆盖设置数据

    override public function set data(value:Object):void {
        super.data = value;
        if(value)
            img.load(value.imageData);
    }
    

    【讨论】:

    • 感谢这个修复,我也在creationComplete上使用了一个init函数。现在我只需要弄清楚如何缓存图像,这样就不必在每次返回视图时都加载(滚动后)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多