ほんじゃら堂

めんどくさい仕事をラクにする作業自動化レシピ集

Actionscript3で外部ファイルを読み込んでTextに表示する

よく使いそうなのでメモ。

まとまった文章や変更の多いテキストはテキストファイルに外部化して、
HTMLへの画像表示と同様にページを開いた時に読み込むようにすることで
コンパイルする事無くFlex上に表示することができる。


テキストファイルのエンコードについては、どのようなルールがあるか調べていないが、
Actionscriptファイルと同じエンコードにして改行モードをunix(LF?)にしておくと
うまく表示された。


textloadtest_script.as

import flash.events.*;
import flash.net.*;
import mx.controls.*;
private function init():void {
loadTextData("/static/texts/greetings.txt", <読み込んだテキストを表示するTextオブジェクト>);
}
private function loadTextData(filePath:String, textArea:Text):void {
var textLoader:URLLoader = new URLLoader();
textLoader.dataFormat = URLLoaderDataFormat.TEXT;
textLoader.addEventListener(Event.COMPLETE, function(event:Event):void {
textArea.text = textLoader.data;
});
var req:URLRequest = new URLRequest(filePath);
textLoader.load(req);
}


読み込むファイルの内容をリッチに表示したい場合は、Textクラスのtextの代わりに
htmlTextプロパティにロードしたデータを渡してやる。
そして、読み込むテキストファイルにfontタグなどのタグでマークアップする。
使用可能なタグは、a、b、br、font、img、i、li、p、textformat、u。


テキストファイル内での改行をbrタグだけで制御したい場合は、Textオブジェクトの
condenseWhiteプロパティをtrueに設定する。デフォルトはfalseで、テキストファイル内の
改行とbrタグの両方が改行として認識される。