2011-04-21 14 views
1

我正在使用LoadVars()將文本文件加載到字符串變量中。對於代碼的最終版本,我希望能夠將該文本作爲actionscript代碼的一部分,並將其分配給字符串,而不是從外部文件加載它。在AS2中嵌入文本,如HEREDOC或CDATA

沿東西定界符語法在PHP中的線,或CDATA在AS3中我發現(http://dougmccune.com/blog/2007/05/15/multi-line-strings-in-actionscript-3/

快速和骯髒的解決方案是把文本到文本對象的影片剪輯,然後獲得價值,但我不喜歡它

btw:文本是多行,可以包括單引號和雙引號。

謝謝!

+0

我不明白你爲什麼不能使用CDATA ... – Kodiak 2011-04-21 16:03:53

+0

不知道如何使用它爲此在AS2,你能不能給我一個例子嗎? – Cristian 2011-04-21 16:22:39

+0

對不起......「AS2」是你的問題的一部分,我的大腦拒絕計算... – Kodiak 2011-04-21 21:54:41

回答

2

我認爲在AS2中唯一的辦法似乎是把它弄髒。在AS3中,您可以使用嵌入標記嵌入資源,但據我所知不在AS2中。

如果它是最終版本,並且意味着您不想再編輯文本,則可以轉義字符並將\ n用作換行符。

var str = "\'one\' \"two\"\nthree"; 
trace(str); 

輸出:

'one' "two" 
three 

現在只是文本複製到文本編輯器並修改每一個「和「到\」和\」,也換行符爲\ n。

+0

這是我想到的第一個解決方案,但我喜歡它甚至比複製/粘貼到文本對象更少。順便說一句:文本很長(50k +),所以這將創建一個非常長的路線。每當需要調整某些東西時,編輯就會變得更加困難。不管怎麼說,還是要謝謝你! – Cristian 2011-04-22 17:29:53

+0

沒問題。你說「代碼的最終版本」 - 意思是你不想改變文本。另外,無論文本的長度如何,這是將文本「嵌入」爲文本的唯一解決方案,因爲它在腳本中是一個變量。和你想要的一樣。 – anemgyenge 2011-04-22 17:39:10

+0

它在我的最後,但不是在客戶端。我交付後他們可能仍然想調整一些東西。所以我正在尋找一種解決方案,以便他們在必要時進行修改。到目前爲止,我所提出的最好的方法是將它放入一個文本對象中,這是一個令人討厭的黑客行爲,但工作起來。但我可以做一些像heredoc一樣的東西,這會更好。不幸的是,它似乎是不可能的。 – Cristian 2011-04-22 17:46:46

0

克里斯蒂安,anemgyenge的解決方案,當你意識到這是一條線。它可以通過簡單的操作進行選擇和替換。

不要在代碼編輯器中編輯文檔。在文檔編輯器中編輯文檔並創建一個將其轉換爲長字符串的過程(例如通過快速PHP腳本運行它)。將轉換後的字符串粘貼到舊字符串中。必要時重複。

從長遠的管理角度來看,這種方式並不理想,特別是如果代碼維護在您沒有移交解析器的情況下被移交,但它解決了一些維護問題。

+0

您好格雷格,謝謝。我使用了我在問題中描述的解決方案(將文本放入動畫片段中),並且做到了這一點。從現在開始使用AS3(直到另一個客戶需要AS2)。乾杯! – Cristian 2011-06-14 00:18:53

0

使用每行一對新的報價,並添加空格作爲單詞分隔符:

var foo = "Example of string " + 
"spanning multiple lines " + 
"using heredoc syntax." 

有一個項目,該項目可能會幫助,增加了ActionScript 2的部分E4X支持:

除了作爲一個項目,該項目增加了HAXE E4X的支持,它可以編譯成一個JavaScript對象: