我有一个A.swf,它将B.swf加载到一个movieclip上,需要传递一些FlashVars。使用html加载B.swf时,我可以正常传递FlashVars。当从A.swf传递时,它会得到一个
错误#2044:未处理的ioError: text =错误#2032:流错误。网址:文件:
A.swf中的代码是
var request:URLRequest = new URLRequest ("B.swf");
var variables : URLVariables = new URLVariables();
variables.xml = "test.xml";
// This line causes the error 2044, else B.swf loads fine with FlashVars
request.data = variables;
loader.load (request);
在B.swf中,它正在检查Flashvars。它从html端正常工作
this.loaderInfo.parameters.xml
答案 0 :(得分:17)
尽管querystring方法在本地工作正常,但如果你使用的是Flash Player 10.2,那么就有一个新的API。
var context:LoaderContext = new LoaderContext();
context.parameters = {'xml': 'test.xml'};
loader.load(request, context);
答案 1 :(得分:2)
“A”没有必要将FlashVars传递给“B”。让B访问FlashVars本身。无论B是在A内部还是顶层本身,以下内容都有效:
在B的构造函数中添加ADDED_TO_STAGE事件侦听器。 e.g:
function B(){
this.addEventListener(Event.AddedToStage, onAddedToStageHandler);
}
当您有权访问舞台时,您现在可以通过以下方式访问FlashVars:
要在B.swf中正确查看名为myVar
flashVar的变量,您可以(在B内):
private function onAddedToStageHandler(){
var flashVars : Object = LoaderInfo(this.stage.loaderInfo).parameters;
// now you have access to your flashVars!
trace(flashVars.myVar);
}
stage.loaderInfo
是您需要关注的内容。
答案 2 :(得分:0)
您可以在加载时将flash变量添加到URI中
URLRequest(String("B.swf" + "?myvar=45"));
问题是当你在uri中加载字符串时,它被放在一个Object loaderInfo.parameters
里面,所以如果你想传递这些参数,你需要创建一个字符串来传递它们。
这是来自http://ragona.com/blog/pass-flashvars-loaded-swf/的脚本,它显示了如何将其转换为字符串数组
//:: Store loader info
var lInfo:Object = this.root.loaderInfo.parameters;
//:: Flashvars
var fVars:String = "?whee=nada"; //:: Getting the syntax change (? --> &) out of the way with a dummy var
//:: Set path + data
for (var flashVar in lInfo)
{
fVars += "&" + flashVar + "=" + lInfo[flashVar];
}
var myRequest:URLRequest = new URLRequest(String("/myPath.swf" + fVars));
答案 3 :(得分:0)
如何沙箱权限?我尝试通过设置添加文件夹,但这也不起作用。
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html#117502
我做了一个简单的新项目。这是完整的代码。
var mc:MovieClip = new MovieClip ();
var loader:Loader = new Loader ();
loader.contentLoaderInfo.addEventListener (Event.COMPLETE, OnComplete);
var request:URLRequest = new URLRequest ("B.swf");
var variables : URLVariables = new URLVariables();
variables.xml = "test2.xml";
// This line causes the error 2044, if i comment out, it runs fine without FlashVars
request.data = variables;
loader.load (request);
function OnComplete (e:Event)
{
trace ("On Complete");
mc = e.currentTarget.content as MovieClip;
addChild (mc);
}