1

宣言型 SWFLoader とプログラム型 SWFLoader のセキュリティの違いは何ですか? ffで。コードでは、loader1 はセキュリティ例外をスローしますが、loader2 はスローしません。

public someFunction(source:String):void
{
  var loader1:SWFLoader = new SWFLoader();
  loader1.load(source);

  loader2.source = source;
}

...

<mx:SWFLoader id="loader2"/>
4

1 に答える 1

1

セキュリティ面での違いはないと思います。MXML は、実際のコンパイルが開始される前にmxmlcコンパイラによって ActionScript に変換されることを思い出してください。したがって、宣言型 SWFLoader (またはその他の宣言型要素) は、手動でコーディングするのではなく、何かを作成する簡単な方法にすぎません。mxmlc 引数を使用して-compiler.keep-generated-actionscript、MXML から生成されるコードの種類を確認できます。

この例の行から実行時エラーが表示されない理由はloader2.source = source;、コードの前の行がエラーを呼び出しているため、その関数の実行がそこで停止するためです。呼び出した行をコメントアウトしてみるとloader1.load(source)、次の行でこの種の SecurityError がスローされることがわかります。

SecurityError: Error #2148: SWF file http://example.com/test.swf cannot access local resource file:///Users/username/Desktop/picture.jpg. Only local-with-filesystem and trusted local SWF files may access local resources.
    at flash.display::Loader/_load()
    at flash.display::Loader/load()
    at mx.controls::SWFLoader/loadContent()
    at mx.controls::SWFLoader/load()
    at mx.controls::SWFLoader/commitProperties()
    at mx.core::UIComponent/validateProperties()
    at mx.managers::LayoutManager/validateProperties()
    at mx.managers::LayoutManager/doPhasedInstantiation()
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.core::UIComponent/callLaterDispatcher2()
    at mx.core::UIComponent/callLaterDispatcher()
于 2008-10-28T21:06:56.303 に答える