質問

宣言型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"/>
役に立ちましたか?

解決

セキュリティの面で違いはないと思います。 MXMLは、実際のコンパイルが開始される前に mxmlc コンパイラーによってActionScriptに変換されるため、宣言型SWFLoader(またはその他の宣言型要素)は、何かを作成するための簡単な方法にすぎないことを忘れないでください手作業でコーディングする。 -compiler.keep-generated-actionscript mxmlc引数を使用して、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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top