2012-01-12 10 views
2

私は配列を作成し、javascript関数を呼び出すフラッシュアプ​​リケーションを持っています。array as function param

var jsParams = ["3011","3012","3013","3014","3015"]; 
ExternalInterface.call("doCall", jsParams); 

そして、これが私のjavascript関数である:

function doCall(params) { 
    console.log(params); 
    console.log(params[0]); 
} 

放火犯で出力する:

["3011","3012","3013","3014","3015"] 
[ 

しかし、私は3011とない[を期待していた二行目のために。それから私は放火犯から同じのparamsと同じ機能を呼び出すようにしようとしていると機能がoutputed:

doCall(["3011","3012","3013","3014","3015"]); 
["3011","3012","3013","3014","3015"] 
3011 

私の質問は、ActionScriptからの配列としてJavaScriptにしていない文字列値としてのparamsを渡す方法です。

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

+1

私はあなたのコードをテストすればうまくいきます。 FireFoxとFlashのどのバージョンを実行していますか? –

+0

Firefox:9.0.1; Flash:11.1.102.55(win7 x64) – JercSi

+0

クロームでも動作します。あなたが与えることができる他の情報? – Gran

答えて

1

params変数が配列ではなく文字列として渡されているようです。

角括弧表記は、文字列に適用すると、指定されたインデックスの文字を表します。この場合、 '['(位置0)になります。

文字列を配列に変換する安全な方法を見つけるためにJSONのデコードを調べる必要があります。evalを推奨せず、JSON.decodeは広くサポートされていません。

0

あなたは別の配列内の配列をカプセル化しようとしましたか?

ExternalInterface.call( "doCall"、[jsParams]);

私は最初の配列は複数のパラメータセットを渡すことができると思います

+0

私がしなければならなかったことは、jsParamsを文字列から配列に置き換えることです。それから、私はちょうど配列ExternalInterface.call( "doCall"、jsParams)を渡した。 – JercSi