我正在使用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')" />
这很完美。 modules / register.swf的内容显示在 extSwf SWFLoader的位置。
但是:我不知道如何与'主'SWF和加载的SWF文件进行交互。
我有一些全局变量要发送到每个加载的SWF文件
(以及我想从加载的SWF文件发送到'main'SWF文件的一些变量)。
一个网站说我可以通过加载 modules / register.swf?var1 = hi&amp; var2 = hello 来发送这些变量,但是可以看到HTTP标头的人(例如 Firefox中的实时HTTP标头可以看到所有这些变量。
那么,是否可以加载SWF文件并向它们发送一些变量?当我有一个新的全局变量时,我不必打开,编辑和重新编译每个MXML项目?
非常感谢!
答案 0 :(得分:0)
看起来这可以显示我的'主'MXML的变量。
import mx.controls.Alert;
import mx.core.FlexGlobals;
Alert.show(FlexGlobals.topLevelApplication.myvar);
使用公共功能:
FlexGlobals.topLevelApplication.myFunction();
我只需要正确的关键字(顶级应用)即可在互联网上搜索。