0

SWF ファイルをロードする AIR アプリケーションを開発しています。ロードした SWF ファイルから FLEX キャンバスにシンボルを追加します。

//...
_loader = new Loader();
var urlReq:URLRequest = new URLRequest(_file);
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadCompleted);
_loader.load(urlReq);
//...

private function swfLoadCompleted(loadEvent:Event):void 
{
        var swfApplicationDomain:ApplicationDomain = (loadEvent.target.applicationDomain as ApplicationDomain);
        var symbolNames:Vector.<String> = swfApplicationDomain.getQualifiedDefinitionNames();

        for each (var symbolName:String in symbolNames)
        {
                var clazz:Class = swfApplicationDomain.getDefinition(symbolName) as Class;
                var symbol:Object = new clazz();
                if (symbol is MovieClip)
                {
                    canvas.addChild(symbol);
                }
        }
}

別のシンボルに配置されたシンボルの一部をクリックすると、次のエラーが表示されます。

*** Security Sandbox Violation ***
SecurityDomain 'file:///C:/Users/user1/Desktop/Symbol_in_symbol_example.swf' tried to access incompatible context 'app:/MyProgram.swf'

このエラーのため、この種のシンボルのドラッグ アンド ドロップを実装できません。この問題の原因は何ですか?

SWFファイルの例を添付します

4

1 に答える 1

1

クラスを 1 つの swf ファイルから air アプリケーションにロードする場合は、2 つのステップでロードする必要があります。

  1. URLLoader を使用して swf ファイルをバイトとしてロードする
  2. 通常のローダーを作成する
  3. ローダー コンテキスト クラスを作成する
  4. プロパティ allowCodeImport = true を設定します
  5. loadbytes でデータをロードする

編集: この回答が見つかりましたAIR ロードサーバーがホストする swf を同じサンドボックスに

于 2013-05-27T18:06:10.940 に答える