こんにちは、初めて投稿させていただきます。
随分前のトピックで恐縮なのですが、現在多言語をサイトを構築しておりまして、XMLでテキストを読み込む作業をしています。言語によって文章の長さが違うので改行が必要になり、やはりXMLを読み込んだ際にXMLファイル内で改行すると行間の幅がダブルスペースぐらいになる問題が起きました。
色々と調べてみたのですが、なかなかよいアイディアが無く、偶然外部CSSファイルを読み込むスクリプトをアクションスクリプトに明記すると、XML内部の「<br/>」タグで改行される事がわかりました。
自分はアクションスクリプトに関してド素人ですので、なぜ今回試した事によって「<br/>」タグがXML>Flashにて使えるようになったのか検討がつきません。
是非皆様のご意見を伺えたらと思います。
/*-----------------AS-------------------*/
System.useCodepage = true;
//load css
myStyle = new TextField.StyleSheet();
//myStyle.load("test.css");
//Apply CSS to text Fields
text_01.styleSheet = myStyle;
//load XML
function loadXML(loaded) {
if (loaded) {
//location in the XML file & OUTPUT
text_01.text = this.firstChild.childNodes[0]//.firstChild;
} else {
trace("file is not loaded!");
}
}
myContent = new XML();
myContent.ignoreWhite = true;
myContent.onLoad = loadXML;
myContent.load("test.xml");
/*------------------------------------*/
上記の通りCSSは反映されていないのでCSSの内容は省略します。
次にXMLです。
/*----------------test.XML-----------------*/
<test_xml>
<top>This is<br/>just a test.</top>
</test_xml>
/*------------------------------------*/
----------------------
This is
just a test.
----------------------
(isの部分で改行されます。)
まず初めに今回使用したアクションスクリプトの一部です。
ご覧のとおりCSSファイルを読み込むスクリプトは明記して
あるのですが、
//myStyle.load("test.css");
の部分をコメントアウトしていますので実際は読み込んでいません。
これはコメントアウトしても問題がなかったという事です。
それからCSSによる
letter-spacing: X em;
word-spacing: X em;
line-height: X %;
などは明記してもFlashには反映されませんでした。
それからXMLを
/*-----------------AS-------------------*/
text_01.text = this.firstChild.childNodes[0]//.firstChild.nodeValue;
/*-----------------AS-------------------*/
上記の様にtext_01というテキストボックスに表示させるのですが、
本来は、
/*-----------------AS-------------------*/
text_01.text = this.firstChild.childNodes[0].firstChild.nodeValue;
/*-----------------AS-------------------*/
と最後の
「firstChild.nodeValue;」
を付ける必要があるのですがコメントアウトしてみました。因みにこの部分があると「<br/>」タグ以降の部分が表示されません。
なぜ上記で「<br/>」が使えるのか全く検討が付かないのですがこれは本来この様に明記するものなのでしょうか? どなたか教えていただけますでしょうか?
宜しくお願いします。