btmup Blog

Web 制作のことを中心に、ちょっとした Tips などを掲載しています。「自分用メモ」が基本スタンス。

ActionScript

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

投稿日:

目下「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 が対象とするテキストフィールドを設定し直すことができました。
外部テキストデータの長さに応じて、ちゃんと動作するようになっているハズです。

雑感&反省

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







-ActionScript
-, , , , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ActionScript 3.0 で parent を指定したときにコンパイルエラーが発生する件。

ActionScript 3.0 (以下、 AS3)で、親 MC に設定したラベルを使って場面を移動したりするときのお話。 「_parent」は AS2 の書き方なので「parent」と書くのは前提と …

no image

ActionScript 3.0 で Javascript を呼び出してウィンドウを閉じる方法。

ググっても情報がなぜか少ないので、とりあえずメモ的にアップ。 window.open() なんかで開いたサブウィンドウを、テキストリンクやボタンで閉じるための方法です。 HTML でウィンドウを閉じる …

no image

ActionScriptとモーショントゥイーンとの関係について

フレームにActionScriptを記述している場合、ターゲットのムービークリップにモーショントゥイーンを設定してたら効かないっぽい。 ということに今日気付きました。 今までにもエラーはないのに何故か …