0

同じドメインからメインのフラッシュ プレーヤーに 2 つの swf ファイルを 1 つずつロードしようとしています...最初のアクション スクリプトはフリークアウトします (stop() 関数が動作を停止するだけです)。さらに、2 番目のアクション スクリプトはサンドボックス違反でいくつかの問題を引き起こします (#2121)。

この問題の理由がわかりません...

最初の swf の読み込みコード:

...
ldr = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
ldr.load(new URLRequest(swf1filename));
...
function swfLoaded(e:Event):void {
    mcExt = MovieClip(e.currentTarget.content);
    mcExt.x = 0;
    mcExt.y = 32;
    addChild(mcExt);
}

2 番目の swf の読み込みコード:

  ...
function showSWF2(){
        if ( end_movie_swf == null && endMcExt== null ){
            end_movie_swf = new Loader();
            end_movie_swf.contentLoaderInfo.addEventListener(Event.COMPLETE, Swf2Loaded);
            end_movie_swf.load(new URLRequest(endSwffilename));

        }else{
            endMcExt.gotoAndPlay("show");
        }
    }
    ...
function Swf2Loaded(e:Event):void {
    trace(e);
    endMcExt = MovieClip(e.currentTarget.content);
    end_movie_swf.contentLoaderInfo.removeEventListener(Event.COMPLETE, endSwfLoaded);
    endMcExt.x = 0;
    endMcExt.y = 0;
    addChildAt(endMcExt,3);
    endMcExt.gotoAndStop("show");
}

そして、私はこのエラーが発生しています:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at SWF1::MainTimeline/frame13()
4

1 に答える 1

0

これら 3 つの swf はすべて同じ ApplicationDomain 内で動作していると思います。これは、誤ってすべての swf で同じオブジェクトの参照を使用していることを意味します。

ロードされた swf が独自のカプセル化された ApplicationDomain 内で動作するように指示する LoaderContext を送信するようにしてください。

このような:

var loaderContext:LoaderContext = new LoaderContext();
loaderContext.applicationDomain = new ApplicationDomain();

ldr.load(new URLRequest(swf1filename),loaderContext);

2 番目の Loader オブジェクトで同じことを行います。

リソースへのリンク: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/system/ApplicationDomain.html

于 2011-04-09T19:07:48.087 に答える