SWF ファイルでは、次のタイプのコンテンツをロードできます。
SWF ファイルおよびイメージ(JPG、GIF、または PNG ファイル)をロードするには、Loader クラスを使用します。local-with-filesystem サンドボックス以外にある SWF ファイルは、任意のネットワークドメインから SWF ファイルおよびイメージをロードできます。ローカルサンドボックス内にある SWF ファイルだけが、SWF ファイルとイメージをローカルファイルシステムからロードできます。しかし、local-with-networking サンドボックス内のファイルは、local-trusted サンドボックスまたは local-with-networking サンドボックス内のローカル SWF ファイルしかロードできません。local-with-networking サンドボックス内の SWF ファイルは、SWF ファイル以外のローカルコンテンツ(イメージなど)をロードしますが、ロードしたコンテンツの中のデータにはアクセスできません。
信頼できないソース(Loader オブジェクトのルート SWF ファイルのドメイン以外のドメインなど)から SWF ファイルをロードするとき、次のコードに示すように、Loader オブジェクトのマスクを定義して、ロードされたコンテンツ(Loader オブジェクトの子)がそのマスクの外部にあるステージの一部分に描画されないようにすることができます。
import flash.display.*; import flash.net.URLRequest; var rect:Shape = new Shape(); rect.graphics.beginFill(0xFFFFFF); rect.graphics.drawRect(0, 0, 100, 100); addChild(rect); var ldr:Loader = new Loader(); ldr.mask = rect; var url:String = "http://www.unknown.example.com/content.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr);
Loader オブジェクトの load() メソッドを呼び出す場合、LoaderContext オブジェクトである context パラメータを指定できます。LoaderContext クラスには、ロードされたコンテンツの使用方法のコンテキストを定義できる次の 3 つのプロパティが含まれています。
詳細については、ロードコンテキストの指定を参照してください。
Loader オブジェクトの重要なプロパティの 1 つに、contentLoaderInfo プロパティがあります。これは LoaderInfo オブジェクトです。他のほとんどのオブジェクトと異なり、LoaderInfo オブジェクトはロードする側の SWF ファイルとロードされたコンテンツの間で共有され、常に双方からアクセスできます。ロードされたコンテンツが SWF ファイルである場合、その SWF ファイルは DisplayObject.loaderInfo プロパティを通じて LoaderInfo オブジェクトにアクセスできます。LoaderInfo オブジェクトには、ロードの進行状況、ロードする側とロードされる側の URL、ロードする側とロードされる側の信頼関係、およびその他の情報が含まれています。詳細については、ロードの進行状況の監視を参照してください。
local-with-filesystem サンドボックス内に入っているものを除くすべての SWF ファイルで、Sound.load()、NetConnection.connect() および NetStream.play() の各メソッドを使用して、ネットワークからサウンドおよびビデオをロードできます。
ローカル SWF ファイルだけが、ローカルファイルシステムからメディアをロードできます。それらのロードされたファイルのデータにアクセスできるのは、local-with-filesystem サンドボックスまたは local-trusted サンドボックスに入っている SWF ファイルだけです。
それ以外にも、ロードされたメディアのデータへのアクセスには制限があります。詳細については、ロードされたメディアへのデータとしてのアクセスを参照してください。
SWF ファイルおよびビットマップをテキストフィールドにロードするには、次のコードに示すように、<img> タグを使用します。
<img src = 'filename.jpg' id = 'instanceName' >
この方法でロードされたコンテンツにアクセスするには、次のコードに示すように、TextField インスタンスの getImageReference() メソッドを使用します。
var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');
ただし、この方法でロードされた SWF ファイルおよびイメージは元の場所に対応するサンドボックスに配置されます。
テキストフィールド内の <img> タグを使用してイメージファイルをロードする場合、イメージ内のデータへのアクセスは、クロスドメインポリシーファイルによって許可できます。ポリシーファイルの有無をチェックするには、次のコードに示すように、checkPolicyFile 属性を <img> タグに追加します。
<img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' >
テキストフィールド内の <img> タグを使用して SWF をロードする場合、Security.allowDomain() メソッドを呼び出すことにより、その SWF ファイルのデータへのアクセスを許可できます。
SWF 内に埋め込んだ Bitmap クラスを使用せず、テキストフィールド内の <img> タグを使用して外部ファイルをロードする場合、Loader オブジェクトは TextField オブジェクトの子として自動的に作成され、外部ファイルは、ActionScript 内の Loader オブジェクトを使用してファイルをロードする場合とまったく同じように、Loader の中へロードされます。その場合、getImageReference() メソッドは、自動的に作成された Loader を返します。この Loader オブジェクトにアクセスするのに、セキュリティチェックの必要はありません。これは、オブジェクトが呼び出し側のコードと同じセキュリティサンドボックス内にあるためです。
ただし、ロードされたメディアにアクセスするために Loader オブジェクトの content プロパティを参照する場合は、セキュリティルールが適用されます。コンテンツがイメージである場合は、クロスドメインポリシーファイルを実装する必要があり、コンテンツが SWF ファイルである場合は、その SWF ファイル内のコードで allowDomain() メソッドを呼び出す必要があります。
Flash Media Server は、RTMP(Real-Time Media Protocol)を使用してデータ、オーディオ、およびビデオを提供します。SWF ファイルは、NetConnection クラスの connect() メソッドを使用してこのメディアをロードし、パラメータとして RTMP URL を渡します。Flash Media Server は、要求元ファイルのドメインに基づいて、接続を制限し、コンテンツがダウンロードされないようにすることができます。詳細については、Flash Media Server のマニュアルを参照してください。
RTMP ソースからロードしたメディアの場合、BitmapData.draw() メソッドおよび SoundMixer.computeSpectrum() メソッドを使用してランタイムグラフィックおよびサウンドデータを抽出することはできません。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート