您好我有一个带有DataProvider的mx:List。如果是FotoItems
,则此数据提供程序是ArrayCollectionpublic class FotoItem extends EventDispatcher
{
[Bindable]
public var data:Bitmap;
[Bindable]
public var id:int;
[Bindable]
public var duration:Number;
public function FotoItem(data:Bitmap, id:int, duration:Number, target:IEventDispatcher=null)
{
super(target);
this.data = data;
this.id = id;
this.duration = duration;
}
}
我的itemRenderer看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
]]>
</fx:Script>
<s:Label text="index"/>
<mx:Image source="{data.data}" maxHeight="100" maxWidth="100"/>
<s:Label text="Duration: {data.duration}ms"/>
<s:Label text="ID: {data.id}"/>
</mx:VBox>
现在当我滚动时,所有离开屏幕的图像都会消失:( 当我看一下arrayCollection时,每个项目的BitmapData都为空。
为什么会这样?
答案 0 :(得分:3)
我将类FotoItem中数据的数据类型从Bitmap更改为BitmapData
在ItemRenderer中的我执行以下操作:
override public function set data( value:Object ) : void {
super.data = value;
pic.source = new Bitmap(value.image);
}
这现在有效。不知道为什么它不使用位图
答案 1 :(得分:0)
我认为这可能与您使用data.data有关 - 我认为数据是Actionscript中的保留关键字,最好将您的图像属性命名为其他内容,例如data.imageData。
我也不确定您为什么要将ArrayCollection导入到项呈示器中,因为您似乎没有在itemRenderer中使用它。
您可能还遇到itemRenderer recyling的问题。您可能希望覆盖public function set data()
并处理在那里设置单个项目属性,而不是依赖于绑定。
您在哪里查看arrayCollection以查看bitmapData是否为空?