Flash CS5 と ActionScript 3 を使用して単純な Flash プロジェクトを作成しています。
私がやりたいことは、指定されたソースと宛先で TLF テキスト コンテナーを動的に更新しloadData(text_placeX, "markup.xml");
たいということです。
それは魅力のように機能していますが、問題はテキストにスクロールバーを使用できないことです。テキスト コンテナーに を追加しましたUIScrollBar
。テキスト コンテナーに入れた既定のテキストで動作していますが、自分のデータでコンテナーを更新すると動作しません。私は何が欠けていますか?
もう 1 つの質問は、テキスト コンテナーに新しいデータをロードする前に、テキスト コンテナーを空にするにはどうすればよいかということです。
私のコードは次のとおりです。
import fl.text.TLFTextField;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.text.TextFieldAutoSize;
import flashx.textLayout.container.ContainerController;
import flashx.textLayout.elements.TextFlow;
import flashx.textLayout.conversion.TextConverter;
import fl.controls.ScrollBar;
var ldr:URLLoader = new URLLoader();
var flow:TextFlow = new TextFlow();
function loadData(text_place, fileURL:String):void {
text_place.border = true;
ldr.dataFormat = URLLoaderDataFormat.TEXT;
ldr.addEventListener(Event.COMPLETE, function(evt:Event){ ldr_complete(text_place) }, false, 0, true);
ldr.load(new URLRequest(fileURL));
ldr.addEventListener(IOErrorEvent.IO_ERROR, loadError);
}
function ldr_complete(text_place:TLFTextField):void {
ldr.removeEventListener(Event.COMPLETE, ldr_complete);
ldr.removeEventListener(IOErrorEvent.IO_ERROR, loadError);
initText(text_place, ldr.data);
}
function loadError(e:IOErrorEvent):void {
trace("Error loading an external file. The server may be busy. Try refreshing the page.");
}
function initText(text_place:TLFTextField, fileContent):void {
flow = TextConverter.importToFlow(fileContent, TextConverter.TEXT_FIELD_HTML_FORMAT);
flow.flowComposer.addController(new ContainerController(text_place, text_place.width, text_place.height));
flow.flowComposer.updateAllControllers();
}
更新:関数コンテンツの使用をスキップしてinitText
、代わりに使用するtext_place.tlfMarkup = fileContent;
と機能します。しかし、私のオプションがTextFlow
ありません。また、テキストフィールドにコンテンツを入れた後、「スクロールバーの更新」がありませんでした。