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

BitMapImage.sourceは、次の 3 つのいずれかを想定しています。ドキュメントから引用するには:

  • Bitmap または BitmapData インスタンス。
  • DisplayObject のサブクラスを表すクラス。BitmapFill はクラスをインスタンス化し、そのビットマップ レンダリングを作成します。
  • DisplayObject のインスタンス。BitmapFill は、塗りつぶしのためにそれを Bitmap にコピーします。

URLの場所を指定しているようです。その場合は、BitMapImage ではなく Imageを使用してください。

于 2011-03-01T14:06:07.723 に答える
0

少し手探りして確認した後、これが私の質問に対する答えだと思います。誰かがこれを確認できるかもしれませんが、私はそれがかなり正しいと思います:

「bitmapimage」は、信頼できる (クロスドメイン ポリシー) ドメインからのデータのみをロードできます。そのため、ローカル ファイルでは問題ありませんが、リモート イメージを読み込んでいたため、ビットマップ イメージは黙ってシャットダウンし、何もしません。取得要求なし、何もありません。

古い「イメージ」は、元の場所に関係なくロードできるため、解決策としてこれに切り替えています。

于 2011-03-01T14:00:19.603 に答える
0

ふぅ、この男のアプローチを使用して修正しました: http://polygeek.com/2452_flex_extending-spark-bitmapimage

たぶんそれは誰かの助けになるでしょう。

乾杯!

于 2011-03-01T15:01:36.370 に答える