在运行时动态加载和编译MXML / AS

时间:2010-01-14 13:03:15

标签: flex actionscript mxml

问候!

我正在尝试构建一个具有flex前端和php后端的应用程序。我正在努力用这个应用程序做一些事我无法想办法。我希望我的flex应用程序基于它从服务器收到的MXML显示一个视图,作为对flex应用程序中某些交互的响应。例如,假设当前视图中有两个按钮,如果我按下第一个按钮,它将从服务器加载一个mxml / as3,当我单击另一个时,它将加载不同的mxml。你觉得我怎么能解决这个问题?如果你知道如何做到这一点,请说清楚,因为我一直在试图想办法让我的头撞在墙上。

最诚挚的问候,

Roshan Amadoru

3 个答案:

答案 0 :(得分:2)

我认为您想要做的是通过Flex中的 modules 来实现。您不能将MXML或.as发送到Flex应用程序,因为它没有编译器将它们更改为二进制可执行代码。所以这样做的方法是准备单独的应用程序部分,这些部分不是随主应用程序下载的,而是可以在以后加载到它,称为模块。

关于flex模块的博文:sujitreddyg.wordpress.com

如果您不希望在将模块部署到服务器之前编译模块,而是希望将mxml代码放在那里(PHP样式),则需要安装Flex Module for Apache(此处的名称模块与flex相同) modules 巧合,这是一件无关的事情)。

答案 1 :(得分:2)

正如Robert所说,Flash VM本身并不解释as3或mxml代码,所以你可以采取两种方式:

  • 如果您需要动态生成代码,可以尝试使用符合您需求的Eval库(http://eval.hurlant.com/)。

  • 如果您已经知道要发送的代码,可以将不同的部分编译为swf或他们自己的代码,并根据之前事件的结果链接到正确的代码。 (使用模块)。大多数Flex框架都会为您提供方法。

答案 2 :(得分:2)

实际上你可以在运行时编译你的mxml,但我不知道性能。如果你的服务器端是java,花岗岩(就像在graniteDS中)有一个webcompiler servlet来实时编译你的mxml。我一直在使用它开发时避免自己编译(普通eclipse EE,没有flexbuilder)并且似乎工作得很好,减去我没有花时间澄清的两个小问题:

1)如果servlet映射为“/ mxml / *”,则需要以

的形式访问mxml

http://localhost://WebApp/mmxml/myUncompiled.mxml

在路径中看到额外的'm'?不知道为什么......

2)无法使用或者dropShadow或其他过滤器编译代码,可能需要在servlet的flex-config.xml中更改一些内容,这就像mxmlc的xml配置一样

除此之外,在我看来,这可能是一个非常具有爆炸性的混合物,.jsp和.mxml