Как получить доступ к переменным «основного» SWF из загруженного SWF с помощью SWFLoader? - PullRequest
0 голосов
/ 01 февраля 2012

Я работаю над сайтом, построенным на Flex, но SWF-файл после компиляции очень большой.Веб-сайты имеют несколько страниц.

Поэтому я подумал создать новый проект MXML для каждой новой страницы и загрузить его с помощью SWFLoader.
Я нашел этот пример:

public function extSwfLoaded(evt:Event):void {
    var sysmgr:SystemManager = (extSwf.content as SystemManager);
    sysmgr.addEventListener(FlexEvent.APPLICATION_COMPLETE, function(event:FlexEvent):void {
        var sysmgr:SystemManager = (event.currentTarget as SystemManager);
        var swfApp:Application = (sysmgr.application as Application);
    }
});

public function gotoPage(page:String):void {
    extSwf.addEventListener(Event.INIT, extSwfLoaded);

    var now:Date = new Date();

    switch(page) {
        case "register":
            openedPage = "register";
            extSwf.load('modules/register.swf?anticache=' + now.getTime());
            break;
    }
}

А в MXML:

<mx:SWFLoader id="extSwf" complete="extSwfLoaded(event)" width="100%" />

<s:Label text="Register" useHandCursor="true" buttonMode="true" click="gotoPage('register')" />

Это прекрасно работает.Содержимое модуля / register.swf показывается на месте extSwf SWFLoader.

Но : я понятия не имею, как взаимодействовать с 'main'SWF и загруженный SWF-файл.

У меня есть несколько глобальных переменных, которые я хочу отправить в каждый загруженный SWF-файл
(и некоторые переменные, которые я хочу отправить из загруженного SWF-файла в' main ''SWF-файл).

Сайт сказал, что я могу отправить эти переменные, загрузив modules / register.swf? Var1 = hi & var2 = hello , но кто-то, кто может видеть заголовки HTTP (дляпример с Live HTTP Headers * (1024 * в Firefox) может видеть все эти переменные.

Итак, возможно ли загрузить SWF-файл и отправить им некоторые переменные?И когда у меня есть новая глобальная переменная, мне не нужно открывать, редактировать и перекомпилировать каждый проект MXML?

Большое спасибо!

1 Ответ

0 голосов
/ 01 февраля 2012

Похоже, что это может показать переменные моего "основного" MXML.

import mx.controls.Alert; 
import mx.core.FlexGlobals; 

Alert.show(FlexGlobals.topLevelApplication.myvar); 

И для использования общедоступных функций:

FlexGlobals.topLevelApplication.myFunction();

Мне просто нужны были правильные ключевые слова ( приложение верхнего уровня ) для поиска в Интернете.

...