0

私がしていること

こんにちは、フラッシュ (ビルダー) アプリケーションへの外部イメージのロードに問題があります。画像を表示するには、次のようにスムージングを有効にして BitmapImage を使用します。

<s:BitmapImage id="image" smooth="true" smoothingQuality="high" width="100%" height="100%" fillMode="clip" />

また、次のように、新しい flex4.6 scaleMode ZOOM を使用してサムネイルを表示します。

<s:Image id="thumbnail" scaleMode="zoom" smooth="true" smoothingQuality="default" />

元の画像の幅と高さを保存する必要があるため、SWFLoader を使用して外部画像をプリロードします。

問題

アプリケーションをローカルでテストすると、すべて正常に動作します! しかし、Web ドメインから実行すると、問題が表示されます。同じドメインで実行されている画像と Flickr からの画像の場合 = 問題ありません。しかし、imageshack のような他の画像には、次の問題があります。

  • 大きな BitmapImage は滑らかではありません。
  • サムネイルは想定どおりにスケーリングされません。サムネイル画像の左上隅にごくわずかに表示されています。マウスをその上に置くと、サムネイルが表示されますが、デフォルトの scalemode と fillmode CLIP で表示されるように

原因?

問題の原因はよくわかりませんが、画像ソースで見られる唯一の違いはドメイン ポリシーにあります。Flickr の crossdomain.xml は、imageshack.us http://www.imageshack.us/crossdomain.xmlとは異なり、すべてのhttp://farm1.static.flickr.com/crossdomain.xmlを許可します。

これが原因である場合、なぜ画像がまだ読み込まれているのかわかりません。何が起こっているのか正確に知っている人はいますか?解決策はありますか?サンクス。

4

1 に答える 1

2

適切なポリシーを有効にしないと、クロスドメインでイメージをロードすることには一定の制限があります。Flash はデータをロードしますが、スムージングを含む操作は許可しません。

これを回避する方法はいくつかあります。サーバー側のプロキシを使用して、ローカルの php または asp ページを介して画像を読み込むことができます。これは最速のソリューションではありませんが、うまくいきます。

LoadBytes を使用してイメージをロードし、バイト配列を Loader オブジェクトに渡すこともできます。Flex コンポーネントを使用するほどきれいではありませんが、ある程度の制御が可能になるはずです。

于 2012-03-05T03:12:59.033 に答える