0

javascript側からflexでメソッドを呼び出したいのですが、

Flex のデータを含む JavaScript オブジェクトを取得できるようにします。

今、私は次のようにしようとしています

var result:Object = new Object()
var keyset:Array = data.getKeySet();

for (var i:int = 0 ; i < keyset.length ; i++) {
    result[keyset[i]] = data.get(keyset[i]);
}

return result;

しかし、それは機能しません。どうすれば正しくできますか?

ps基本的な質問であることはわかっていますが、1時間ググっても何も見つかりませんでした。だから助けてください!

4

2 に答える 2

2

ページ上で Flash/Flex と JS の間で通信するには、ExternalInterface クラスを使用します。オブジェクトを直接渡すことはできませんが、オブジェクトをシリアライズ可能/文字列に変換できます。「myFunc」という関数を呼び出して、文字列と数値の 2 つの引数を設定する方法は次のとおりです。

ExternalInterface.call('myFunc',1,'aString');

常に文字列でなければならない関数名の後に、...rest パラメータがあります。簡単に言うと、これは、コンマで区切って、任意の数の引数を関数に送信できることを意味します (ここでは 2 つ行います)。

過去にAS2を使用したことがある場合は、「eval」関数を知っているかもしれません. func/args の代わりに Javascript コードを送信します。

ExternalInterface.call('alert("Hello!")');

双方向通信が必要な場合は、ExternalInterface.addCallBack 関数を使用して、関数を JS から呼び出し可能として登録します。

これを行う際にエラーが発生した場合は、埋め込みコードを調整する必要がある場合があります: 「HTML ページを含む SWF ファイルの object タグで、次のパラメーターを設定します。

param name="allowScriptAccess" value="always"

于 2012-10-22T09:29:49.737 に答える
1

AS3 のメソッドを JS から直接呼び出すことはできないと思います (逆もまた同様です)。ただし、一方が他方を呼び出すことができるインターフェイスが必要です。私の記憶が正しければ、ExternalInterfaceAPIを使用する必要があります。

また、Flex オブジェクトを JS (およびその逆) に渡すこともできません。JSON にシリアル化可能な汎用オブジェクトを構築し、そのシリアル化されたデータを使用してデータを相互に受け渡してみてください。受信側はそれを解析してデータを使用できます。このでは、コードは文字列を JS から AS3 に渡しました。

あなたの場合、Flex 関数は次のようになります。

  • オブジェクトを構築する
  • データを詰め込む
  • JSON文字列にシリアライズする
  • 文字列を呼び出し元に返す

次に、JS が関数を呼び出すと、次のようになります。

  • JS は文字列を受け取ります
  • JSON.parse()JSON 文字列を JS オブジェクトに再構築するために使用します
  • オブジェクトを使用する
于 2012-10-22T08:10:09.917 に答える