2010-07-13 99 views
1

我传递一个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方面所有的代码都可以改变。

谢谢你的帮助。

+0

所以你想要usercities作为阵列数组传递? – spinon 2010-07-13 19:41:04

+1

我认为你必须以某种系列化你'usercities' – 2010-07-13 19:41:27

+0

@spinon,正确的,我想它作为一个数组的数组传递...但它得到的对象数组过去了...... – Frankie 2010-07-13 19:43:05

回答

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

希望这可以帮助别人。

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 

虽然我认为它是一样的,但闪光灯可能会看到它不同。

+0

其实这证明成为两个空阵列。滑稽。仍在努力去做。 – Frankie 2010-07-13 22:26:37

+0

这太糟糕了。那么为什么不使用一组对象呢? – spinon 2010-07-13 22:55:57

+0

好吧...只是走了简单的路。更改了所有闪存代码以按位置[0],[1],[2]引用项目,并将该数组作为以逗号分隔的字符串传递。在Flash上​​分解该字符串并转换为数组。不漂亮,但工程。感谢您的帮助。 – Frankie 2010-07-13 23:32:24

1

JavaScript没有关联数组和其它语言一样。为了有命名索引,你必须使用一个对象。被赋值为一个具有指定索引的数组将被转换为一个对象。

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

+0

我可能必须按照你的说法序列化它。试图解析它到目前为止没有任何结果... – Frankie 2010-07-13 22:47:52

相关问题