うまくいっている URL の例を教えてください。
Ebay は、他のドメインの Flash アプリが自社の画像を使用することを明確に防いでいると思います。
URL エンコーディングは問題ではありません。Flash はブラウザに依存してダウンロードします。ただし、コンポーネントの奥深くに埋め込まれたこのコードを見てくださいBitmapImage
(これは、SparkImage
コンポーネントが使用する基本的なものです)。
BitmapImage::loadExternal() (1513 行目)
try
{
loaderContext.checkPolicyFile = true;
var urlRequest:URLRequest = source is URLRequest ?
source as URLRequest : new URLRequest(source as String);
loader.load(urlRequest, loaderContext);
}
ここではLoader
、画像を取得してソース ドメインの crossdomain.xml ファイルを確認するために使用することを に伝えています。その crossdomain.xml ファイルへのリンクを次に示します。
彼らの crossdomain.xml ファイルは、さまざまな ebay ドメインの Flash アプリが i.ebayimage.com のコンテンツにアクセスできるようにするためのものです。スキャンしたところ、allow-access-from domain="*"
ebay 以外のドメインを許可するワイルドカード ( ) を許可するものは見当たりません。そのため、ebay が許可しない限り、これらの画像を Flash アプリで使用することはできません。
[編集]
以下のいずれかを行う前に、おそらく、自分が行っていることの合法性を判断する必要があります。
実際、私はそれを取り戻します。Image
これらのコンポーネントはポリシー ファイルをチェックするため、FlexまたはBitmapImage
コンポーネントを使用してこれらのイメージをロードすることはできません。ただし、いくつかのオプションがあります。
- クラスを拡張し
BitmapImage
てメソッドをオーバーライドしloadExternal()
、ポリシー ファイルをチェックしないようにする
- 独自のものを使用
Loader
して画像を表示します。これは Flex アプリ内での作業ですが、機能します (単純な AS3 アプリでテストしたところです)。
これは、私がテストした非常に初歩的な AS3 アプリケーションです (Flex を使用していません)。
package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.net.URLRequest;
public class As3Project extends Sprite
{
private var loader:Loader;
function As3Project()
{
loader=new Loader();
var url:URLRequest = new URLRequest("http://i.ebayimg.com/00/s/MTA2MlgxNjAw/%24T2eC16JHJG%21E9nm3pkoZBQDVSKHsow%7E%7E60_1.JPG?set_id=880000500F");
loader.load(url);
addChild(loader);
}
}
}