Home > ActionScript > 外部テキストファイルを読み込んだときにスクロールバー[UIScrollBar]が反応しない(Desabled状態になる)件とその解決法。

外部テキストファイルを読み込んだときにスクロールバー[UIScrollBar]が反応しない(Desabled状態になる)件とその解決法。

[読了時間の目安:約 5 分]

目下「ActionScript 3.0 を頑張って覚えようキャンペーン」を開催中なのですが、さっそくつまづいたのでメモ。

外部ファイルのテキストを読み込んで、テキストフィールド(TextField)に表示しようとしたときのこと。
表示エリアのサイズは決まっているので、はみ出す分に関しては UIScrollBar でスクロールバーを導入することにしました。
が、その UIScrollBar には、ちゃんと働いてもらうためのちょっとしたクセみたいなものがあったのです。

というお話。

外部テキストファイルの読み込み

外部ファイルを読み込むスクリプトはいたってシンプル。
たぶんどこを探しても大体同じだと思うのですが、一応載せておきます。

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadComplete);
loader.load(new URLRequest("test.txt"));
function loadComplete(evt:Event):void {
	output_txt.text = evt.target.data;
}

「test.txt」というテキストファイルの読み込みが終わったら、その中身をインスタンス名が「output_txt」というテキストフィールドに入れなさい、という意味ですね。
ちょっと回りくどい書き方ですけど、まぁ単語の意味とかを考えれば分かると思います。

で、ムービープレビューでちゃんと動作したので、いざパブリッシュをしてみたところ……。

スクロールバーが無反応な理由とその対策

テキストは読み込めていたものの、スクロールバーが反応してくれません(Desabled状態になっている)。

そこでいったん外部ファイルは使わずに、直接テキストをスクリプト内に書き込んでみました。
すると、スクロールバー反応。

ということは、やはり外部ファイルを読み込んでいることに原因があるらしい。
ということが分かったので、そのあたりを重点的にググってみました。

で、見つけたのがこちら↓の記事。
»[AS3] TextFieldの罠(UIScrollBar編) – initialize
シンプルな解説で分かりやすいですね。

要は、外部ファイルを読み込み終わる前に(テキストフィールドが空の状態で) UIScrollBar の表示も完了してしまうので、じゃあ読み込み終わった後にもう一回 UIScrollBar を設定してやれば良いじゃないか、ということですね。

その方法は、スクリプトに以下の一文(赤字)を追加するだけで OK です。

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loadComplete);
loader.load(new URLRequest("test.txt"));
function loadComplete(evt:Event):void {
	output_txt.text = evt.target.data;
	scrollbar.scrollTarget = output_txt;
}

UIScrollBar にもインスタンス名を付けることをお忘れなく(ここでは「scrollbar」にしてます)。

これで、UIScrollBar が対象とするテキストフィールドを設定し直すことができました。
外部テキストデータの長さに応じて、ちゃんと動作するようになっているハズです。

雑感&反省

ムービープレビューを信用しすぎてはいけない。
プレビューはあくまでプレビュー。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.btmup.com/flash/actionscript/external-text-uiscrollbar-desabled.html/trackback
Listed below are links to weblogs that reference
外部テキストファイルを読み込んだときにスクロールバー[UIScrollBar]が反応しない(Desabled状態になる)件とその解決法。 from btmup Blog

Home > ActionScript > 外部テキストファイルを読み込んだときにスクロールバー[UIScrollBar]が反応しない(Desabled状態になる)件とその解決法。

リンク
フィード
メタ情報

このページのトップへ