2

MovieClipLoader を使用して外部 as2 swf ファイルを as2 flash プロジェクトにロードしていますが、ロードした swf の元のステージ サイズを取得できません。

次のコードを実行すると:

var popup:MovieClip = _root.createEmptyMovieClip("popup", 1);
var loader:MovieClipLoader = new MovieClipLoader();
var loadHandler:Object = new Object();
loader.addListener(loadHandler);
loader.loadClip(url, popup); 
loadHandler.onLoadInit = function(mc:MovieClip) {
    trace(mc._width + ", " + mc._height);
}

読み込んだ swf ファイルのステージ サイズが実際に必要な場合、幅/高さの値がおかしい (mc._width=601.95、mc._height=261.15) になります。この場合、300px x 250px であることがわかっています。

どんな提案でも大歓迎です!ありがとう

4

3 に答える 3

3

ここでの問題は、ロードされたswfが別のswfにロードされると、ステージサイズが失われることです。親のステージは、ロードされたswfのステージになります。ロードされたswfのサイズを要求すると、あなたが行うように、ステージの幅と高さではなく、最初のフレームの表面全体の幅と高さが返されます。

私が過去にこれを解決した方法は、ロードされたswfの最初のフレームに、そのswfのステージのサイズでムービークリップインスタンスを作成することです。swfがロードされたら、そのswfをターゲットにして、その寸法を取得できます。もちろん、これは、ロードしようとしているswfを公開制御できる場合にのみ機能します。

これを例で説明します。ロードするswfで、最初のフレームにムービークリップ(長方形のムービークリップなど)を配置し、stage_mcという名前を付けます。ここでswfをロードすると、次のようにそのstage_mcインスタンスをターゲットにできます。

loadHandler.onLoadInit = function(mc:MovieClip) {
    trace(mc.stage_mc._width + ", " + mc.stage_mc._height);
}
于 2009-06-02T02:15:06.643 に答える
0

AS3 では、loaderinfo プロパティを使用して、ロードされた SWF の高さを取得できます。

// imports
    import flash.display.LoaderInfo;

// loading code
    var loader:Loader = new Loader();
    loader.load(new URLRequest('some_swf.swf'));
    loader.contentLoaderInfo.addEventListener(Event.INIT, loaderInitHandler);

// listener
    function loaderInitHandler(event:Event):void 
    {
        var info:LoaderInfo = event.target as LoaderInfo;
        trace('Loaded swf is ' + info.width + ' x ' + info.height + ' px');
    }

// Loaded swf is 500 x 300 px
于 2010-03-31T17:19:42.447 に答える
-1

試す

stage.width; 
stage.height;
于 2009-06-02T02:25:16.107 に答える