2

ライブ計算を行う Java アプリケーションから SWF ファイルが値をすぐに取得できるようにするにはどうすればよいですか (速度が必要です)。

別の形での質問: どうすればウェブサイトのブラウザに直接データを与えることができますか? それは現在計算されている豆です - できるだけ早く?

4

2 に答える 2

1

フラッシュが実行されているのと同じブラウザの Java アプレットで計算が行われていると仮定します。

次のコードを使用して、アプレット内から Javascript を呼び出すことができます。このコードは、フラッシュ アニメーションの値を更新できます。

import netscape.javascript.JSObject;

JSObject win = JSObject.getWindow(applet);
win.eval("window.alert('Hello from Java')");

私の仮定が間違っているとすれば、Java アプリケーションはどこで実行されているのでしょうか? クライアントまたはサーバー上で?

サーバー上にある場合は、Flash リモート処理が必要です。いくつかの異なる Flash リモート処理手法があると思います。java flash remotingを検索してみてください。最新のデータを取得するために、2 秒ごとにサーバーを呼び出すようにすることができます。

クライアント上で実行されている場合、セキュリティのために Flash から接続できるとは思えません。署名された Java アプレットは、どこにでも接続できます。それを使用してデータを取得し、上記の方法を使用して Flash にプッシュできます。ただし、クレイジーなハックになります。Flex でも同じことができますか? (以前は Flex を使用したことがありません)。

于 2009-03-23T07:55:46.953 に答える
1

速度が重要な場合は、おそらく何らかのソケット接続を介して実行することをお勧めします。通常、署名付きアプレットまたは WebStart Java アプリケーションは、リッスン ソケットを開くことができます。その後、Flash アプリケーションはこのソケットに接続できるようになり、その結果、非常に高速な双方向通信が可能になります。

ただし、いくつかの注意事項があります。

  • ユーザーが自分のマシンでの奇妙なソケット アクティビティに疑いを持ったり、ファイアウォールによってブロックされたりする可能性があることに注意してください。そのため、ユーザーに警告する必要があります。
  • Flash から Java に接続できるようにするには、リスニング ソケットからクロスドメイン ポリシー ファイルをディスパッチする必要があります (または 1024 未満の他のもの - 詳細についてはドキュメントを参照してください。キーワード: crossdomain、policy-file-request、loadPolicyFile )。また、Flash アプリケーションは、Java アプリケーションからそのようなファイルを手動で要求する必要がある場合があります。

Java アプリケーションの証明書を取得する方法に関するいくつかの便利なリンク:無料のコード署名証明書 (ロシア語) を取得する方法、英語での同様の説明ですが、詳細度は低くなります。

ただし、組み合わせを使用できる場合 (速度が十分である場合) は、それを利用することをおJava Applet <-> JavaScript <-> Flash勧めします。

于 2009-03-24T15:46:34.990 に答える