2012-07-18 60 views
1

我知道如何訪問ActionScript 2中的外部XML文件,但是在此項目中,要求SWF文件必須是自包含的。在編譯/發佈時將XML嵌入到Flash文件中?

我保留XML的原因是因爲它是另一個程序的輸出,所以如果我可以保留XML,那麼我會避免手動輸入數據。

我知道AS3中有[嵌入]元標記,但我很遺憾地被AS2卡住了。

有沒有一種方法來嵌入XML文件,或者在編譯/發佈時使用ActionScript 2讀取數據並將其作爲變量存儲?

回答

0

經過廣泛的測試後,我發現我的限制太多,僅僅依靠Flash來解決我的問題。

因爲我僅限於AS2,我不能使用外部XML,這意味着...

  1. 我不能嵌入XML(AS3功能)。
  2. 如果我嘗試將整個XML粘貼到舞臺上的文本字段中,它會超過最大字符數限制65535.
  3. 我無法將XML直接粘貼到代碼編輯器中(多行字符串文字是AS3功能)。
  4. 對於#3,即使在我逃過所有引號並刪除換行符後,Flash也會窒息一個變量。

所以我做的是創建一個單獨的HTML頁面,使用jQuery我加載目標XML文件並清理Flash文件不使用的所有數據,並將結果吐出到div上,正確地轉義角括號和引號,這樣,結果XML數據足夠小,可以放入舞臺上的文本框中,我可以將其用作輸入。

所以工作流程變爲:

Generate XML -> Open HTML page -> Copy Cleaned XML -> Paste into Textfield in Flash -> Publish 

這可能是又邁進了一步,但HTML/JavaScript可以運行在任何地方,是我的用戶漂亮的新空房禁地簡單,所以它最終是考慮我的侷限一個很好的解決方案。

1

在AS3中,你可以硬編碼XML(不使用嵌入語法):

private var myXml:XML = <root_node> 
          <child_1 /> 
          <child_2 /> 
         </root_node>; 

我只是做了一個快速search for AS2,它看起來像這樣的(注意鏈接的文章提到了pit-你可以做到這一點下降或兩個):

xmlData = new XML(); 
xmlData.ignoreWhite = true; 
xmlData.parseXML("<root_node><child_1 /><child_2 /></root_node>;"); 
+0

不幸的是,由於問題狀態AS2是一個硬性要求。嘗試了parseXML路由,但顯然我的XML文件太大了,它似乎超載了parseXML函數,我甚至無法將其定義爲字符串變量。也不能使用文本字段作爲XML輸入,最大字符數限制爲65535(2^16-1),我懷疑所有變量都有16位限制。 – Shaw 2012-07-19 00:04:37

+1

然後,我應該將該XML轉換爲JSON(或純AS)對象並進行編譯。您將獲得性能提升,而不是在運行時解析XML。 – 2012-07-19 06:47:07

+0

事情是我實際上爲不一定技術熟練的用戶創建XML-> SWF工作流程。 XML是由另一個程序生成的,所以他們不需要擔心,但是如果他們必須將XML編譯成JSON/AS對象,我可能會問得太多。 – Shaw 2012-07-19 19:22:23