我想让java应用程序在动作脚本中调用一个函数?

时间:2009-03-23 07:33:06

标签: java flex flash actionscript-3 amf

如何让SWF文件立即从进行实时计算的Java应用程序中检索值(速度是必需的)。

  

其他形式的问题:我怎么能   给我的网站浏览器立即数据    - 这是现在计算的bean - 和我一样快   可以?

2 个答案:

答案 0 :(得分:1)

我将假设计算是在运行闪存的同一浏览器中的Java小程序中完成的。

您可以使用以下代码从小程序中调用Javascript。然后,此代码可以更新flash动画中的值。

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。)

答案 1 :(得分:1)

如果速度至关重要,您可能希望通过某种套接字连接来实现。通常签名的applet或WebStart Java应用程序能够打开侦听套接字。然后,Flash应用程序将能够连接到此套接字,因此您将具有非常快速的双向通信。

然而,有一些警告。

  • 您应该记住,用户可能会对其计算机上的奇怪套接字活动产生怀疑,或者只是被防火墙阻止 - 因此您需要警告用户。
  • 为了能够从Flash连接到Java,您必须从侦听套接字(或1024以下任何其他任何内容)调度跨域策略文件 - 有关详细信息,请参阅文档;关键字:crossdomain,policy-file-request,{{3 }})。此外,您的Flash应用程序可能需要从Java应用程序手动请求此类文件。

有关如何获取Java应用程序证书的一些有用链接:loadPolicyFilehow to get free code signing certificate (Russian)

但是,如果你能够(阅读:速度足够)使用Java Applet <-> JavaScript <-> Flash组合,我建议你利用它。