0
我正在使用Flex构建的网站上工作,但编译后的SWF文件非常大。这些网站有多个页面。如何通过SWFLoader从加载的SWF访问“主”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的内容显示在SWFLoader的地址extSwf处。
但是:我不知道如何与'主'SWF和加载的SWF文件进行交互。
我有一些全局变量,我想发送到每个加载的SWF文件
(和一些变量,我想从加载的SWF文件发送到'主'SWF文件)。
一个网站说,我可以通过加载模块发送这些变量/ register.swf?VAR1 =喜& VAR2 =你好,但谁可以看到HTTP标头(例如使用在Firefox 直播HTTP头 )可以看到所有这些变量。
那么,是否可以加载SWF文件并向它们发送一些变量?当我有一个新的全局变量时,我不必打开并编辑和重新编译每个MXML项目?
非常感谢!
对我来说,你应该可以在每个页面的swf中使用像'initWithWrapper(handleToWrapper:ClassNameOfWrapper)'这样的方法,一旦swf被加载完成,你的包装swf就会调用它。一旦该链接建立,他们可以相互交谈。您的'ClassNameOfWrapper'类将不得不公开swf可以与之交互的方法。 – Ian 2012-01-31 22:46:38