Javascript传递一个对象数组而不是一个数组数组

时间:2010-07-13 19:38:08

标签: javascript flash actionscript-3 arrays flashvars

我通过Javascript Array()FlashVars传递给Flash,但Flash抱怨。你们能指出我在这里做错了吗?

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;

Flash代码

// 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方面,所有代码都可以更改。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

JavaScript没有像其他语言一样的关联数组。要获得命名索引,必须使用对象。为指定索引赋值的数组将转换为对象。

为此,您可能需要更改Flash代码。正如meder所说,序列化你的阵列是你最好的选择。我建议在JavaScript中使用JSON编码,在Flash中使用解码。

答案 1 :(得分:0)

你可以手动制作它们。像这样:

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

虽然我认为它完全相同,但闪光可能会有不同的看法。

答案 2 :(得分:0)

结束传递值:

<强>的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个项目,并且没有项目有逗号。

希望这可以帮助某人。