4

3 つの異なるコンテナーに 3 つの異なるティッカーをロードしようとしています。この行を削除すると:

 loader2.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
 loader3.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));

それらを個別にロードすると、正常に動作します。

ここに画像の説明を入力

しかし、アドビでこのドキュメントに書かれているように、それらを一緒にロードすると、3つのティッカーすべてが同じ番号を示します:

ここに画像の説明を入力

package  {    
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.display.Loader;


public class importExternalSWF extends MovieClip {
    private var loader:Loader = new Loader();
    private var loader2:Loader = new Loader();
    private var loader3:Loader = new Loader();

    public function importExternalSWF() {
        loader.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=mrj-4&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
        loader2.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=bl&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));
        loader3.load(new URLRequest("http://tickers.playtech.com/jackpots/new_jackpot.swf?casino=cityclub&info=1&game=grel&font_face=Arial&bold=true&font_color=FFFFFF&bg_color=240000&font_size=24&currency=eur"));

        ticker1.addChild(loader);
        ticker1.width=50;
        ticker1.height=20;

        ticker2.addChild(loader2);
        ticker2.width=50;
        ticker2.height=20;

        ticker3.addChild(loader3);
        ticker3.width=50;
        ticker3.height=20;      
        }
    }
}

私はどこにも解決策を見つけることができません

ありがとう

編集これにコードを書き直しましたが、それでも同じ結果です

public class importExternalSWF extends MovieClip {

    public function importExternalSWF() {

        var url = "http://tickers.playtech.com/jackpots/new_jackpot.swf";
        var urlParams:Array = ["grel", "bl", "game=mrj-4"];
        var tickers:Array = [ticker1, ticker2, ticker3];
        var tickerHeight:Number = 50;
        var tickerWidth:Number = 50;

        loadUrls();

        function loadUrls():void {

            for(var i:uint = 0; i<urlParams.length; i++)
            {
                var urlLoader = new Loader();
                var flashvars:URLVariables = new URLVariables();
                flashvars["casino"] = "cityclub";
                flashvars["info"] = "1";
                flashvars["game"] = urlParams[i];
                flashvars["currency"] = "eur";
                flashvars["font_face"] = "arial";
                flashvars["bold"] = "true";
                flashvars["font_size"] = "10";
                flashvars["bg_color"] = "0x000000";
                flashvars["font_color"] = "ffffff";

                var request:URLRequest = new URLRequest(url);
                request.data = flashvars;
                urlLoader.load(request);

                tickers[i].width=tickerWidth;
                tickers[i].height=tickerHeight;
                tickers[i].addChild(urlLoader);
            }
        }
    }
4

4 に答える 4

3

外部 SWF ファイルがルート レベルでいくつかの変数を設定していると思われます。したがって、各ロードは以前の値を上書きし、すべての「ティッカー」で同じスコアになります。

ほとんどの場合、この干渉は、各 SWF を独自の にロードすることで解決できますApplicationDomain。デフォルトでは、SWF は同じApplicationDomainにロードされ、コードを共有します。

したがって、これを行う代わりに:

urlLoader.load(request);

次のようにする必要があります。

// create a new LoaderContext with a spearate ApplicationDomain
var context:LoaderContext = new LoaderContext(false, new ApplicationDomain());

// load the request and use the context with the separate ApplicationDomain
urlLoader.load(request, context);
于 2013-07-25T15:39:30.237 に答える