0

我有一个火花列表组件和一个相应的自定义itemrenderer

列表组件:

<s:List id="albumImagesList" itemRenderer="the.namespace.for.XYZImageRenderer" useVirtualLayout="false" width="400" height="160">
    <s:layout>
        <s:TileLayout requestedColumnCount="5"
                requestedRowCount="2"
                rowHeight="80"
                columnWidth="80"
                horizontalGap="0"
                verticalGap="0" />
    </s:layout>
</s:List>

项目渲染器:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx"
                autoDrawBackground="true" width="100%" height="100%">
    <s:states>
        <s:State name="normal" />
    </s:states>

    <s:BitmapImage source="{data.image_path}" width="70" height="70" horizontalCenter="0" verticalCenter="0" />

</s:ItemRenderer>

一切都很好,花花公子,数据被正确填充,我验证了data.image_path财产安全无恙地到达了itemrenderer.

我唯一的问题是:图像没有显示。我不确定它是否根本不渲染,或者它只是以某种方式不可见。

有人第一眼看到什么吗?我在这里做一些根本错误的事情吗?我以前使用过 mx 项目渲染器,但我从来没有遇到过这么大的麻烦。

4

3 回答 3

0

经过一番摸索和检查后,我想这就是我的问题的答案。也许有人可以证实这一点,但我认为这几乎是正确的:

“位图图像”只能从受信任的(跨域策略)域加载数据。所以使用本地文件没问题,但是我正在加载远程图像,并且位图图像会静默关闭并且什么也不做。没有得到请求,什么都没有。

旧的“图像”可以加载任何东西,无论它来自哪里,所以我现在切换到这个作为解决方案。

于 2011-03-01T14:00:19.603 回答
0

BitMapImage.source需要三件事之一。引用文档:

  • 一个 Bitmap 或 BitmapData 实例。
  • 表示 DisplayObject 子类的类。BitmapFill 实例化该类并创建它的位图呈现。
  • DisplayObject 的一个实例。BitmapFill 将其复制到 Bitmap 中进行填充。

听起来您正在给它一个 URL 位置。如果是这样,则使用Image,而不是 BitMapImage。

于 2011-03-01T14:06:07.723 回答
0

唷,好的,用这个人的方法解决了:http: //polygeek.com/2452_flex_extending-spark-bitmapimage

也许它会对某人有所帮助。

干杯!

于 2011-03-01T15:01:36.370 回答