JavaScript是传递对象的数组,而不是一个数组的数组的
我传递一个Javascript Array()
通过FlashVars
但是Flash抱怨闪烁。你们能指出我在这里做错了什么吗?JavaScript是传递对象的数组,而不是一个数组的数组的
JavaScript代码
// array with the user defined cities
var usercities = new Array(
{'nome':"London", 'lat':51.5002, 'long':-0.1262 },
{'nome':"NYC", 'lat':51.5002, 'long':-0.1262 }
);
flashvars.newcities = usercities;
闪存代码
// this array is pre-populated so if the users doesn't enter data this is shown
var cities:Array = new Array(
{ nome:"London", lat:51.5002, long:-0.1262 },
{ nome:"NYC", lat:40.7144, long:-74.0060 }
);
// gets FlashVars
var newcities:Object = LoaderInfo(this.root.loaderInfo).parameters.newcities;
if(newcities != null) {
cities = newcities;
};
不工作。我需要完全按照Flash侧的cities
阵列。在JavaScript方面所有的代码都可以改变。
谢谢你的帮助。
截止了传递值,因为这:
的JavaScript
var cities = new Array(
Array("London", 51.5002, -0.1262),
Array("NYC", 40.7144, -74.0060),
);
那一刹那变得作为一个纯粹的字符串。
"London",51.5002,-0.1262,"NYC",40.7144,-74.0060
然后我分解了字符串并转换为数组。这有点脏,但最终的作品。只要Array每行总是有3个项目,并且没有项目有逗号。
希望这可以帮助别人。
那么你可以手动进行他们的阵列。这样的事情:
var usercities = [];
usercities[0] = [];
usercities[0]["nome"] = "London";
usercities[0]["lat"] = 51.5002
usercities[0]["long"] = -0.1262
usercities[1] = [];
usercities[1]["nome"] = "NYC";
usercities[1]["lat"] = 51.5002
usercities[1]["long"] = -0.1262
虽然我认为它是一样的,但闪光灯可能会看到它不同。
JavaScript没有关联数组和其它语言一样。为了有命名索引,你必须使用一个对象。被赋值为一个具有指定索引的数组将被转换为一个对象。
为了做到这一点,你可能需要更改您的Flash代码。正如meder所说,序列化你的阵列是你最好的选择。我建议在JavaScript中使用JSON编码,并在Flash中使用解码。
我可能必须按照你的说法序列化它。试图解析它到目前为止没有任何结果... – Frankie 2010-07-13 22:47:52
所以你想要usercities作为阵列数组传递? – spinon 2010-07-13 19:41:04
我认为你必须以某种系列化你'usercities' – 2010-07-13 19:41:27
@spinon,正确的,我想它作为一个数组的数组传递...但它得到的对象数组过去了...... – Frankie 2010-07-13 19:43:05