Android 需要将变量传递给远程swf
我正在开发一个Air for Android原型应用程序,该应用程序加载一些远程swf文件(所有文件都由我创建和控制),我需要能够将一个变量传递给远程swf 下面是该流程当前工作方式的快速分解:Android 需要将变量传递给远程swf,android,actionscript-3,flash,Android,Actionscript 3,Flash,我正在开发一个Air for Android原型应用程序,该应用程序加载一些远程swf文件(所有文件都由我创建和控制),我需要能够将一个变量传递给远程swf 下面是该流程当前工作方式的快速分解: Android应用程序名为Loader,安装在设备上 Loader指向我的服务器并找到Player.swf,它将其加载到主阶段。Player.swf显示登录屏幕 当用户正确登录时,Player.swf将从API接收XML响应,其中包含要为用户显示的远程swf视频列表。swf在XML列表中循环并逐个播放
- Android应用程序名为Loader,安装在设备上
- Loader指向我的服务器并找到Player.swf,它将其加载到主阶段。Player.swf显示登录屏幕
- 当用户正确登录时,Player.swf将从API接收XML响应,其中包含要为用户显示的远程swf视频列表。swf在XML列表中循环并逐个播放每个远程swf
但奇怪的是,我不能使用父变量或根变量来提取变量?我已经在运行android 2.2.2的HTC Desire上进行了测试,它的工作原理与我在评论中提到的一样,因此答案如下:) 您的主机需要定义类似的:
var params:URLVariables = new URLVariables();
params["string"] = "ala ma kota";
params["number"] = 1979;
var request:URLRequest = new URLRequest();
request.data = params;
request.url = "urlVarsReader.swf";
var loader:Loader = new Loader();
loader.load(request);
addChild(loader);
然后加载的内容(此处为urlVarsReader.swf)可以按如下方式读取:
var output:TextField = new TextField();
addChild(output);
output.border = true;
output.width = 320;
output.height = 240;
output.wordWrap = true;
output.multiline = true;
var p:Object = getParams(this.loaderInfo);
for (var name:String in p)
{
output.appendText(name + " = " + p[name] + "\n");
}
我有一个用于读取参数的包装器方法:
public function getParams(li:LoaderInfo):Object
{
try
{
var params:Object = li.parameters;
var pairs:Object = {};
var key:String;
for(key in params)
{
pairs[key] = String(params[key]);
}
}
catch(e:Error)
{
return {error:e.getStackTrace()};
}
return pairs;
}
致意
编辑:
这仅适用于本地内容在SecurytyError中失败的情况,例如SecurityError:Error#2070:Security sandbox违规:调用方无法访问app所拥有的阶段:/loadwithparams.swf您能展示一下您是如何尝试的吗?如果您正在将另一个SWF加载到主SWF中,则URLRequest的数据对象可以用URLVariables填充,并传递给Loader的load方法。感谢您的输入。你试过远程服务器上托管的urlsvaread.swf吗?还记得,我的android应用程序正在加载一个远程swf,它会加载更多的远程swf。App>swf(这一个提供变量)>swf(这一个需要拾取它)很遗憾无法加载它:(我在谷歌上搜索过,人们建议使用HTMLLoader/StageWebView或将其作为ByteArray加载。如果你看到我的帖子编辑,你可以看到我的参数在hosted player.swf和远程动画之间工作,但是使用applicationdomain上下文(我知道这很奇怪,因为它们都在同一台服务器上)添加“try{Security.allowDomain(”;}catch(e){和“try{Security.allowInsecureDomain(”);}catch(e){};”添加到应用程序中,并将“Security.allowDomain(”)和“Security.allowInsecureDomain(”)添加到HSF中