2

こんにちは私はDataProviderでmx:Listを持っています。FotoItemsの場合、このデータプロバイダーはArrayCollectionです。

public 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がnullになっています。

なぜそうなのですか?

4

2 に答える 2

3

Class FotoItem のデータの Datatype を Bitmap から BitmapData に変更しました

ItemRenderer で次のことを行います。

override public function set data( value:Object ) : void {
            super.data = value;
            pic.source = new Bitmap(value.image);
        }

これで動作します。ビットマップで動作しない理由がわからない

于 2010-05-20T19:08:43.877 に答える
0

data.data の使用に問題がある可能性があると思います - data は Actionscript の予約済みキーワードであり、画像プロパティに data.imageData などの別の名前を付けるのが最善かもしれません。

itemRendererでArrayCollectionを使用していないように見えるため、ArrayCollectionをアイテムレンダラーにインポートする理由もわかりません。

また、 itemRenderer のリサイクルに関する問題が発生している可能性もあります。public function set data()バインディングに依存するのではなく、個々の項目のプロパティの設定を上書きして処理したい場合があります。

bitmapData が null であることを確認するために、arrayCollection のどこを見ていますか?

于 2010-05-20T18:45:50.590 に答える