Dav*_*ant 4 apache-flex flash flashvars swfloader actionscript-3
我有一个Flex 3应用程序(播放器v9)加载Flash SWF(AS3,也是播放器v9),需要动态传递一组在运行时已知的参数.这些参数通常通过flashvarsHTML页面中的元素传递.嵌入式影片通过loaderInfo.parameters对象访问这些参数.
我试过使用SWFLoader和Loader类在param传递中没有成功.
相关细节:
loaderInfo.parameters["foo"] = "123"了嵌入代码中的设置,但参数似乎永远不会出现在嵌入式电影中.小智 9
在URL中传递这个参数将无济于事,因为它们是使用html-wrapper中的javascript代码进行的.'flashVars'参数是使用Application.application.parameters获取的,因此,您必须在您的情况下手动设置这些参数.
如果您使用SWFLoader加载另一个应用程序,您应该创建对象,该对象将代表加载的应用程序并应用您需要的所有内容:
<mx:Script>
<![CDATA[
import mx.managers.SystemManager;
import mx.controls.Alert;
import mx.events.FlexEvent;
private var loadedApp:Application;
private function onLoadComplete(event:Event):void {
var smAppLoaded:SystemManager = SystemManager(event.target.content);
smAppLoaded.addEventListener(FlexEvent.APPLICATION_COMPLETE, onLoadedAppComplete);
}
private function onLoadedAppComplete(event:FlexEvent):void {
try {
loadedApp = Application(event.target.application);
if(!loadedApp) throw new Error();
loadedApp.parameters["param1"] = "value1";
} catch (e:Error) {
Alert.show("Failed to get application loaded.", "Error", Alert.OK);
}
}
private function onLoadError():void {
Alert.show("Failed to load an application.", "Error", Alert.OK);
}
]]>
</mx:Script>
<mx:SWFLoader
width="100%" height="100%"
source="./AppToLoad.swf"
complete="onLoadComplete(event)"
ioError="onLoadError()" securityError="onLoadError()" />
Run Code Online (Sandbox Code Playgroud)
在网页上嵌入 SWF 时,您可以将 flashvars 作为 URL 上的参数传递给 SWF,也许同样的方法也适用于您的情况?如果 SWF 位于file:///some/path/to/a.swf尝试使用file:///some/path/to/a.swf?hello=world&foo=bar. 它可能会起作用。