Доступ к flashvar определен в HTML из загруженного потомком SWF?ОТВЕТ, ПРЕДОСТАВЛЯЕМЫЙ НИЖЕ - PullRequest
0 голосов
/ 11 ноября 2010

В моем 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, но я не хочу изменять файлы основного приложения флэш-памяти.

Как получить доступ к переменной flashvars из моего файла 728x90.swf?

РЕДАКТИРОВАТЬ:

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 передаются в мой основной SWF-файл, который называется «REMap.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 ]

2 голосов
/ 25 марта 2012

Вы можете получить параметры родительского swf, вызвав

parent.loaderInfo.parameters
0 голосов
/ 11 ноября 2010

Простой ответ:

Создайте переменную и назовите ее как хотите.Я попробовал следующие три:

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

Ответ: Чтобы получить доступ к flashvars родительского swf из дочернего swf, используйте следующий код:

var s1:String = stage.loaderInfo.parameters["PLACE THE NAME OF YOUR FLASHVAR WITHIN QUOTATIONS"];
trace(s1);
0 голосов
/ 17 января 2012

Фил прав, что:

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

будет работать, , но будет работать , только , если дочерний SWF уже добавлен на сцену Это происходит один / несколько кадров после завершения загрузки. Вы можете прослушать событие у ребенка так:

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
}
0 голосов
/ 11 ноября 2010

Ваш объект документа является MovieClip. Flashvars, связанные с MovieClip, хранятся в его свойстве loaderInfo.parameters. Не получайте flashvars от stage.loaderInfo.parameters, если вы не хотите, чтобы flashvars ассоциировались с исходным вызывающим flash-фильмом.

Изменить, чтобы добавить:

Прочтите о , как передать flashvars во флэш-видео . У меня такое ощущение, что вы пытаетесь получить доступ к объекту JavaScript из flash. Это тоже можно сделать, вам просто нужно прочитать 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. Возможно, неправильно отправляются флешки.

...