2010-01-14 37 views
1

問候!在運行時動態加載和編譯MXML/AS

我正在嘗試構建一個具有flex前端和php後端的應用程序。我正在努力做這個應用程序,我無法想出一個辦法。我希望我的Flex應用程序根據它從服務器接收到的MXML顯示一個視圖,作爲對Flex應用程序中某些交互的響應。例如,假設當前視圖中有兩個按鈕,並且如果我按下第一個按鈕,它將從服務器加載一個mxml/as3,並且當我單擊另一個時,它將加載不同的mxml。你如何看待我可以解決這種情況?如果你知道如何做到這一點,請說清楚一點,因爲我一直在試圖想出一個辦法,在牆上敲我的頭。

最好的問候,

羅山Amadoru

回答

2

我想你想要做的就是通過模塊 Flex中取得的成就。您無法將MXML或.as發送到Flex應用程序,因爲它沒有編譯器將它們更改爲二進制可執行代碼。所以要做到這一點的方法是準備單獨的應用程序部分,這些部分不會與主應用程序一起下載,但可以稍後加載,稱爲模塊。

一篇博客文章柔性模塊:sujitreddyg.wordpress.com

如果您不想將其部署到服務器之前編譯模塊,但寧願把MXML代碼存在(PHP樣式),您將需要安裝Flex Module for Apache(此處的名稱模塊與flex 模塊相同,這與其無關)。

2

正如羅伯特說,閃存VM本身不能解釋AS3或MXML代碼,那麼你可以去兩種方式:

  • 如果您需要動態生成的代碼,你可以嘗試使用Eval圖書館(http://eval.hurlant.com/),可以滿足您的需求。

  • 如果您已經知道要發送的代碼,則可以將不同部分編譯爲swf或自己的代碼,並根據以前事件的結果鏈接到正確代碼。 (使用模塊)。大多數Flex框架將爲您提供這樣的方式。

+0

完全忘了As3 eval項目,謝謝。 – 2010-01-14 18:05:02

+0

這不是完全簡單的使用,但它的工作:) – 2010-01-14 21:02:41

2

其實你可以在運行時編譯你的mxml,但我不知道性能。如果你的服務器端是java,花崗岩(就像graniteDS)有一個web編譯器servlet來實時編譯你的mxml。我一直在開發時使用它,避免自己編譯它(純eclipse EE,沒有flexbuilder),似乎工作得很好,減去兩個小問題,我沒有花時間澄清:

1)如果servlet映射 「/ MXML/*」 你需要訪問你的MXML作爲

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

見路徑額外的 'M'?不知道爲什麼......

2)不能或陰影效果或其他過濾器編譯代碼,可能需要改變servlet的柔性-config.xml中的東西,至極就像對mxmlc的

xml配置

除此之外,在我看來,這可能是一個非常具有爆炸性的混合物,.jsp和。mxml