■外部テキストファイルの読み込み
外部テキストファイルの読み込みにはURLLoaderクラスを使用します。基本的な手順は外部イメージファイルの読み込みと同じですが、Loaderインスタンスが表示オブジェクトなのに対し、URLLoaderクラスのインスタンスは表示オブジェクトではありません。URLLoaderクラスでダウンロードしたテキストを表示するには、ステージに表示されているダイナミックテキストフィールドやTextAreaコンポーネントにテキストを入れる必要があります。なお、Loaderクラスでイメージを読み込む場合と同様にSWFと外部テキストファイルが同じドメインにない場合はセキュリティエラーになります。これを解決するにはクロスドメインポリシーファイルを相手側サーバーに置き、アクセスが許可されているかどうかをチェックするする必要があります。(ポリシーファイルのチェック→p.??)
次のTextdataLoaderクラスでは、外部のテキストファイルを読み込み、そのテキストをステージに作ってあるTextAreaコンポーネントのインスタンスに表示します。
[:NOTE:]
変数の読み込み、PerlやPHPなどのサーバーサイドスクリプトとのやり取りにもURLLoaderクラスを使います。AS2.0のLoadVarsクラスはAS3.0ではURLLoaderクラスに置き換えられました。なお、SWFファイルおよびイメージファイルをロードするにはLoaderクラスを使用します(Loaderクラス→p.??)。
fig10-01-01 外部テキストファイルから読み込んだテキストをTextAreaに表示します。
[:sample:]
TextdataLoader.as
例:外部テキストファイルを読み込むTextdataLoaderクラス
package {
import fl.controls.TextArea;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.system.System;
import flash.events.Event;
import flash.text.TextFormat;
public class TextdataLoader {
var txtArea:TextArea;
//コンストラクタ
function TextdataLoader(ta:TextArea, url:String, shiftJIS:Boolean) {
txtArea = ta;
var format:TextFormat = new TextFormat();
format.size = 18;
txtArea.setStyle("textFormat",format);
//URLLoader作成
var txtLoader:URLLoader = new URLLoader();
txtLoader.dataFormat = URLLoaderDataFormat.TEXT;
txtLoader.addEventListener(Event.COMPLETE, onLoaded);
//URL
var urlReq:URLRequest = new URLRequest(url);
//Shift-JISならばtrue
System.useCodePage = shiftJIS;
//読み込み開始
txtLoader.load(urlReq);
}
//読み込んだテキストを表示する
function onLoaded(event:Event):void {
txtArea.text = txtLoader.data;
}
}
}