0

私のhtmlファイルにフラッシュ変数が保存されています:

<script type="text/javascript">

    var flashvars = {

        map:"mapGAcentury21.xml"

    };

    var params = {

        menu: "false",

        scale: "noScale",

        allowFullscreen: "true",

        allowScriptAccess: "always",

        bgcolor: "#FFFFFF"

    };

    var attributes = {

        id:"REMap"

    };

    swfobject.embedSWF("REMap.swf", "altContent", "840", "630", "9.0.0", "expressInstall.swf", flashvars, params, attributes);

</script>

FlashDevelop で開発したフラッシュ アプリケーションがあります。この Flash アプリケーション内から、728x90.swf というファイルをロードします。728x90.fla ファイルは自由に編集できますが、メインのフラッシュ アプリケーション ファイルは変更したくありません。

728x90.swf ファイル内から flashvars 変数にアクセスするにはどうすればよいですか?

編集:

The following codes traced "your variable is undefined" 
1. trace("your variable is " + stage.loaderInfo.parameters.flashvars); 
2. trace("your variable is " + loaderInfo.parameters.flashvars); 
3. trace("your variable is " + loaderInfo.parameters.flashvars.map);
4. trace("your variable is " + stage.loaderInfo.parameters.flashvars.map);

編集 2: JavaScript コード全体を元の投稿に貼り付けました。flashvars は、「REMap.swf」というメインの swf ファイルに渡されます。REMap.swf

public var requestAd:URLRequest = new URLRequest("media/728x90.swf");

次に、関数で次のコードが私の 728x90.swf ファイルをロードします

loaderAd.load(requestAd);
addChild(loaderAd);
loaderAd.contentLoaderInfo.addEventListener(Event.COMPLETE, promoLoaded);
4

4 に答える 4

2

親 swf のパラメーターを取得するには、次の呼び出しを行います。

parent.loaderInfo.parameters
于 2012-03-25T11:58:59.600 に答える
0

簡単な答え:

変数を作成し、好きな名前を付けます。私は次の3つを試しました:

var s1:String = stage.loaderInfo.parameters["map"];
var s2:String = this.root.loaderInfo.parameters["map"];
var s3:String = root.loaderInfo.parameters.map;

trace(s1 + " " + s2 + " " + s3);

出力:mapGAcentury21.xml null null

回答:子swfから親swfのflashvarsにアクセスするには、次のコードを使用します。

var s1:String = stage.loaderInfo.parameters["PLACE THE NAME OF YOUR FLASHVAR WITHIN QUOTATIONS"];
trace(s1);
于 2010-11-11T17:25:17.403 に答える
0

フィルは正しいです:

var s1:String = stage.loaderInfo.parameters["map"];

は機能します、子SWFがすでにステージに追加されている場合にのみ機能します。これは、ロードが完了した後、1つまたはいくつかのフレームで発生します。あなたは次のように子供のイベントを聞くことができます:

public function instantiateChildClass(){
   trace(stage.loaderInfo.parameters["map"]); //throws error if this SWF has just been loaded into a parent SWF
   addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void{
   removeEventListener(Event.ADDED_TO_STAGE, init);
   trace(stage.loaderInfo.parameters["map"]); //traces map param
}
于 2012-01-17T03:02:05.703 に答える
0

ドキュメント オブジェクトはMovieClip. MovieClip に関連付けられた flashvars は、そのloaderInfo.parametersプロパティに格納されます。stage.loaderInfo.parameters元の呼び出し元のフラッシュ ムービーに関連付けられた flashvars が必要でない限り、flashvars から取得しないでください。

編集して追加:

flashvars を flash video に渡す方法について読んでください。Flash から JavaScript オブジェクトにアクセスしようとしているような気がします。それも可能です。flash.external.ExternalInterfaceを読むだけで済みます。

編集#2:

public var requestAd:URLRequest = new URLRequest("media/728x90.swf");

おそらく次のようになります。

public var requestAd:URLRequest = new URLRequest("media/728x90.swf?map=mapGAcentury12.xml");

呼び出しによって生成される HTML を確認しswfobject.embedSWFます。flashvars が正しく送信されていない可能性があります。

于 2010-11-11T15:33:05.123 に答える