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

動作しません。citiesフラッシュ側にアレイをそのまま配置する必要があります。Javascript側では、すべてのコードが変更される可能性があります。

ご協力ありがとうございました。

4

3 に答える 3

1

JavaScriptには、他の言語のような連想配列はありません。名前付きインデックスを作成するには、オブジェクトを使用する必要があります。名前付きインデックスを持つ値が割り当てられた配列は、オブジェクトに変換されます。

これを行うには、Flashコードを変更する必要がある場合があります。メダーが言ったように、アレイをシリアル化することが最善の策です。JavaScriptでのJSONエンコードと、Flashでのデコードをお勧めします。

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

それはすべて同じだと思いますが、フラッシュはそれを異なって見ているかもしれません。

于 2010-07-13T19:44:26.520 に答える
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 に答える