1

我正在将一个传递Javascript Array()给 Flash,FlashVars但 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;

闪码

// 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;
};

不工作。我需要让citiesFlash 端的阵列保持原样。在 Javascript 方面,所有代码都可以更改。

谢谢您的帮助。

4

3 回答 3

1

JavaScript 不像其他语言那样具有关联数组。为了有命名索引,你必须使用一个对象。分配了具有命名索引的值的数组将转换为对象。

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

于 2010-07-13T19:49:47.187 回答
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

然后我分解了字符串并转换为数组。它有点脏,但最终有效。只要数组总是每行有 3 个项目并且没有项目有逗号。

希望这可以帮助某人。

于 2010-07-13T23:36:33.053 回答
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

虽然我认为这都是一样的,但 flash 可能会以不同的方式看待它。

于 2010-07-13T19:44:26.520 回答