ファイルの読み込みについて
ロード状況を取得する
サンプルをダウンロード
■ LoaderInfo クラスについて
読み込み状況を把握するには、LoaderInfo クラスを使用します。このクラスは、DisplayObject クラスがサブクラスとして保持しています。
root にあるローダーインフォを取得する
var info : LoaderInfo = root.loaderInfo;
■ 読み込み状況を調べる
現在の読み込みバイト数を調べるには、bytesLoaded プロパティを使用します。
読み込まれる総バイト数を調べるには、bytesTotal プロパティを調べます。
この2つのプロパティの数値が一致したときにすべての読み込みが完了したことがわかります。
読み込まれる総バイト数を調べるには、bytesTotal プロパティを調べます。
この2つのプロパティの数値が一致したときにすべての読み込みが完了したことがわかります。
自身の読み込み状況を調べる
var info : LoaderInfo = root.loaderInfo;
stage.addEventListener(Event.ENTER_FRAME,EnterFrameFunc);
function EnterFrameFunc(event){
trace("読込数 : " + info.bytesLoaded);
trace("総数 : " + info.bytesTotal);
trace("パーセント : " + Math.floor(info.bytesLoaded / info.bytesTotal * 100));
if(info.bytesLoaded == info.bytesTotal){
trace("ロード完了");
stage.removeEventListener(Event.ENTER_FRAME,EnterFrameFunc);
}
}
■ イベントを使って読み込み状況を調べる
progress、complete イベントを使ってローディング状況を知る事もできます。
イベントを使って自身の読み込み状況を調べる
// ローダーインフォを取得
var info : LoaderInfo = root.loaderInfo;
// 読み込み中に常に呼び出される
info.addEventListener (ProgressEvent.PROGRESS,LoaderInfoProgressFunc);
function LoaderInfoProgressFunc (event : ProgressEvent) {
trace ("読込:" + event.bytesLoaded);
trace ("全体:" + event.bytesTotal);
trace ("パーセント:" + Math.floor(event.bytesLoaded / event.bytesTotal * 100));
}
// 読み込み完了時に呼び出される
info.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
trace ("読み込みを完了");
}
■自身のswfファイルが格納されているURLを取得する
自身のファイルの置き場所となるURLを取得するには、url プロパティを使用します。
自身のswfファイルが格納されているURLを取得す
var info : LoaderInfo = root.loaderInfo;
trace("ファイルパス : " + info.url);
画像やSWFファイルを読み込む
サンプルをダウンロード
■Loader クラスについて
Loader クラスを使うと、画像やSWFファイルを読み込むことができます。
画像の読み込めるフォーマットは、GIF、JPEG、PNG 形式です。GIFアニメ形式は1フレーム目のみ表示できます。
SWF ファイルは、どのバージョンでも読み込めます。
AS3.0で書き出された SWF ファイルの場合は、相互に変数のやり取りができますが、AS1.0/2.0 で書き出された SWF ファイルの場合は相互の変数のやり取りができないようです。
画像の読み込めるフォーマットは、GIF、JPEG、PNG 形式です。GIFアニメ形式は1フレーム目のみ表示できます。
SWF ファイルは、どのバージョンでも読み込めます。
AS3.0で書き出された SWF ファイルの場合は、相互に変数のやり取りができますが、AS1.0/2.0 で書き出された SWF ファイルの場合は相互の変数のやり取りができないようです。
Loader は以下のクラスから派生しています。ここで解説してない分はリンク先に解説がありますので合わせてご覧下さい。
| Object |
| ↓派生 |
| EventDispatcher |
| ↓派生 |
| DisplayObject |
| ↓派生 |
| InteractiveObject |
| ↓派生 |
| DisplayObjectContainer |
| ↓派生 |
| Loader |
■ローダークラスをインスタンス化する
まずローダークラスをインスタンス化します。
|
new Loader ( ); | ||||
|
ローダーオブジェクトを作成する
var loader_obj : Loader = new Loader();
■読み込みを開始する
load() メソッドを使うと読み込みを開始することが出来ます。引数にファイルまでの相対パスかURLを指定します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
|
Loader.load ( URLRequest型 , LoaderContext型 ); | ||||||
|
ファイルの読み込みを開始する
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest("http://hakuhin.com/test.swf");
loader_obj.load(url);
swfファイルからの相対パスを使う事もできる
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest("../sound/test.png");
loader_obj.load(url);
■読み込みを停止する
読み込みを停止したい場合は、close() メソッドを呼び出します。
読み込みが最後まで完了した場合、このメソッドを呼び出すことはできません。
読み込みが最後まで完了した場合、このメソッドを呼び出すことはできません。
読み込みを停止する
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest(test.swf");
loader_obj.load(url);
loader_obj.close();
■読み込んだデータを破棄する
読み込んだデータを破棄したい場合は、unload() メソッドを呼び出します。
読み込んだデータに対して何らかの参照をしている場合は消れる事はありません。
読み込んだデータに対して何らかの参照をしている場合は消れる事はありません。
読み込んだデータを破棄する
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest(test.swf");
loader_obj.load(url);
loader_obj.unload();
■読み込んだデータを表示する
読み込んだデータを表示するには、ローダーオブジェクトを任意の表示リストに登録します。表示リストについてはこちらで解説しています。
ファイルを読み込み stage の表示リストに登録して画面に表示する
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest("test.swf");
loader_obj.load(url);
stage.addChild(loader_obj);
■ストリーム読み込みのローティング状況を知る
どれだけ読み込まれたかのローディング状況を知りたい場合は、open、progress、init、complete、ioError イベントを使用します。
読み込み状況を知る
var loader_obj : Loader = new Loader();
// ローダーインフォを取得
var info : LoaderInfo = loader_obj.contentLoaderInfo;
info.addEventListener (Event.OPEN,LoaderInfoOpenFunc);
function LoaderInfoOpenFunc (event : Event) {
trace ("読み込みを開始した");
}
info.addEventListener (ProgressEvent.PROGRESS,LoaderInfoProgressFunc);
function LoaderInfoProgressFunc (event : ProgressEvent) {
trace ("読込:" + event.bytesLoaded);
trace ("全体:" + event.bytesTotal);
trace ("パーセント:" + Math.floor(event.bytesLoaded/event.bytesTotal*100));
}
info.addEventListener (Event.INIT,LoaderInfoInitFunc);
function LoaderInfoInitFunc (event : Event) {
trace ("読み込んだコンテンツの初期化が行われプロパティにアクセス可能");
}
info.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
trace ("読み込みを完了");
}
info.addEventListener (IOErrorEvent.IO_ERROR,LoaderInfoIOErrorFunc);
function LoaderInfoIOErrorFunc (event : IOErrorEvent) {
trace ("ファイル入出力のエラー");
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.swf");
loader_obj.load(url);
■読み込んだファイルの情報を得る
contentLoaderInfo プロパティからさらに情報を得ることができます。よく利用しそうなプロパティを列挙してみました。「全」という項目が○のプロパティは
すべて読み込みが完了するまで正確なパラメータを取得することができません。
| 全 | プロパティ名 | 型 | 説明 |
| ○ | contentType | String | ファイルの MIME タイプ (SWFファイル) "application/x-shockwave-flash" (JPEGファイル) "image/jpeg" (GIFファイル) "image/gif" (PNGファイル) "image/png" (不明なバイナリ) null |
| ○ | url | String | 読み込まれるファイルの置き場所 |
| × | loaderURL | String | 読み込み要求するSWFファイルの置き場所 |
| ○ | width | int | コンテンツの幅 |
| ○ | height | int | コンテンツの高さ |
読み込んだファイルの情報を得る
var loader_obj : Loader = new Loader();
// ローダーインフォを取得
var info : LoaderInfo = loader_obj.contentLoaderInfo;
// すべて読み込まれ初期化が完了したとき
info.addEventListener (Event.INIT,LoaderInitFunc);
function LoaderInitFunc (event) {
trace("MIME タイプ : " + info.contentType);
trace("ファイルの置き場所 : " + info.url);
trace("要求側ファイルの置き場所 : " + info.loaderURL);
trace("幅 : " + info.width);
trace("高さ : " + info.height);
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.png");
loader_obj.load (url);
■読み込んだSWFファイルの情報を得る
swf ファイルフォーマット時のみ取得できるプロパティの一覧です。contentType == "application/x-shockwave-flash" であるかチェックしてから
アクセスします。
| 全 | プロパティ名 | 型 | 説明 |
| ○ | swfVersion | uint | SWFファイルのバージョン SWFVersion.* |
| ○ | frameRate | Number | フレームレート |
| ○ | actionScriptVersion | uint | 使用されているアクションスクリプトのバージョン |
読み込んだSWFファイルの情報を得る
var loader_obj : Loader = new Loader();
// ローダーインフォを取得
var info : LoaderInfo = loader_obj.contentLoaderInfo;
// すべて読み込まれ初期化が完了したとき
info.addEventListener (Event.INIT,LoaderInitFunc);
function LoaderInitFunc (event) {
// SWFファイルかチェック
if(info.contentType == "application/x-shockwave-flash"){
trace("SWFファイルのバージョン : " + info.swfVersion);
trace("フレームレート : " + info.frameRate);
trace("アクションスクリプトのバージョン : " + info.actionScriptVersion);
}
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.swf");
loader_obj.load (url);
■親 SWF ファイルから読み込んだ子 SWF ファイルにアクセスする
AS3.0で書き出されたSWFファイル同士であれば相互に変数のやり取りが可能です。
『読み込まれたSWF ファイルの root 部分』 が、 『Loader.content プロパティ』 に格納されます。オブジェクト型の変数に入れ直すとドットを付けてアクセスできます。
『読み込まれたSWF ファイルの root 部分』 が、 『Loader.content プロパティ』 に格納されます。オブジェクト型の変数に入れ直すとドットを付けてアクセスできます。
子 SWF ファイルのroot.aaa 変数にアクセスする
var loader_obj : Loader = new Loader();
// ローダーインフォを取得
var info : LoaderInfo = loader_obj.contentLoaderInfo;
info.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
var swf_root : Object = loader_obj.content; // 子の root
trace(swf_root.aaa);
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.swf");
loader_obj.load(url);
■読み込んだ子 SWF ファイルから親 SWF ファイルにアクセスする
『読み込まれたSWF ファイルの root.parent.parent』 から 『親SWFファイルの stage 』 にアクセスできます。
親 SWF ファイルのroot.aaa 変数にアクセスする
var p_stage = root.parent.parent; // 親の stage
var p_root : Object = p_stage.getChildByName("root1"); // 親の root
trace(p_root.aaa);
■ByteArray 型の配列に格納したデータから読み込む
loadBytes() メソッドを使用すると、ByteArray 型のデータを読み込んで画像やSWFファイルとして動的にインスタンス化して使用することができます。
|
Loader.loadBytes ( ByteArray型 , LoaderContext型 ); | ||||||
|
バイナリデータからSWFファイルを読み込む
var stream:ByteArray = new ByteArray();
var data = [
0x46,0x57,0x53,0x05,0x56,0x00,0x00,0x00,0x70,0x00,0x0F,0xA0,0x00,0x00,0xBB,0x80,
0x00,0x1E,0x01,0x00,0x43,0x02,0xFF,0xFF,0xFF,0xBF,0x00,0x2B,0x00,0x00,0x00,0x01,
0x00,0x70,0x7D,0x0D,0xAC,0x07,0xD0,0x9C,0x40,0x02,0x00,0x00,0x66,0xCC,0x00,0xFF,
0x00,0x00,0x01,0x14,0x00,0x00,0x00,0x00,0x21,0x15,0xCD,0xAC,0x27,0x11,0x78,0x51,
0x21,0xDB,0x06,0x0F,0x05,0xDC,0x3B,0x5F,0x40,0x00,0x86,0x06,0x06,0x01,0x00,0x01,
0x00,0x00,0x40,0x00,0x00,0x00
];
var i;
var num = data.length;
for(i=0; i < num; i++) {
stream.writeByte(data[i]);
}
var loader_obj : Loader = new Loader();
loader_obj.loadBytes(stream);
stage.addChild(loader_obj);
loadBytes() メソッドは非同期で実行される為、すぐにインスタンス化する事ができません。
エラーがある場合は loadBytes() メソッドの実行後にすぐに得られる為、必ずイベントを先に設定してからこのメソッドを呼び出す必要があります。
エラーがある場合は loadBytes() メソッドの実行後にすぐに得られる為、必ずイベントを先に設定してからこのメソッドを呼び出す必要があります。
イベントを使用する
var stream:ByteArray = new ByteArray();
var data = [
0x46,0x57,0x53,0x05,0x56,0x00,0x00,0x00,0x70,0x00,0x0F,0xA0,0x00,0x00,0xBB,0x80,
0x00,0x1E,0x01,0x00,0x43,0x02,0xFF,0xFF,0xFF,0xBF,0x00,0x2B,0x00,0x00,0x00,0x01,
0x00,0x70,0x7D,0x0D,0xAC,0x07,0xD0,0x9C,0x40,0x02,0x00,0x00,0x66,0xCC,0x00,0xFF,
0x00,0x00,0x01,0x14,0x00,0x00,0x00,0x00,0x21,0x15,0xCD,0xAC,0x27,0x11,0x78,0x51,
0x21,0xDB,0x06,0x0F,0x05,0xDC,0x3B,0x5F,0x40,0x00,0x86,0x06,0x06,0x01,0x00,0x01,
0x00,0x00,0x40,0x00,0x00,0x00
];
var i;
var num = data.length;
for(i=0; i < num; i++) {
stream.writeByte(data[i]);
}
var loader_obj : Loader = new Loader();
var info : LoaderInfo = loader_obj.contentLoaderInfo;
info.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
stage.addChild(loader_obj);
trace ("メモリストリームから読み込みに成功");
}
info.addEventListener (IOErrorEvent.IO_ERROR,LoaderInfoIOErrorFunc);
function LoaderInfoIOErrorFunc (event : IOErrorEvent) {
trace ("ファイル入出力のエラー");
}
loader_obj.loadBytes(stream);
また、同じタイミングでloadBytes() メソッドを何度も呼び出すと前の処理が中断する事があります 。
データが大きいと起こるようです。イベントで確実に終了した事を確認してからもう一度 loadBytes() イベントを呼び出すとよさそうです。
サウンドファイルを読み込む
■サウンドファイルを読み込む
サウンドファイルの外部読み込みについてはこちらにまとめています。
外部からサウンドファイルを読み込み再生する
var url : URLRequest = new URLRequest("http://hakuhin.com/test.mp3");
var loader_obj : Sound = new Sound(url);
SoundChannel = loader_obj.play();
テキストファイルを読み込む
サンプルをダウンロード
■URL ローダークラスをインスタンス化する
まず URL ローダークラスをインスタンス化します。引数にURLRequest型でテキストファイルまでの相対パスかURLを記述するとストリーミング読み込みを開始します。
|
new URLLoader ( URLRequest型 ); | ||||
|
ローダーオブジェクトを作成する
var url = new URLRequest("http://hakuhin.com/test.txt");
var url_loader : Loader = new URLLoader(url);
■読み込みを開始する
load() メソッドを使って読み込みを開始することも出来ます。引数にファイルまでの相対パスかURLを指定します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
|
URLLoader.load ( URLRequest型 , LoaderContext型 ); | ||||||
|
ファイルの読み込みを開始する
var url_loader : Loader = new Loader();
var url : URLRequest = new URLRequest("http://hakuhin.com/test.txt");
url_loader.load(url);
swfファイルからの相対パスを使う事もできる
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest("../text/test.txt");
loader_obj.load(url);
■読み込みを停止する
読み込みを停止したい場合は、close() メソッドを呼び出します。
ストリーム読み込みを開始していない場合、このメソッドを呼び出すことはできません。
ストリーム読み込みを開始していない場合、このメソッドを呼び出すことはできません。
読み込みを停止する
var url_loader : URLLoader = new URLLoader();
var url : URLRequest = new URLRequest("test.txt");
url_loader.load(url);
url_loader.close();
■読み込んだデータを表示する
読み込みに成功すると、data プロパティに String型 でデータが格納されます。
テキストファイルを読み込み トレース表示する
var url : URLRequest = new URLRequest("test.txt");
var url_loader : URLLoader = new URLLoader();
// 読み込み完了時に呼び出されるイベント
url_loader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
var str : String = url_loader.data;
trace(str);
}
■ストリーム読み込みのローティング状況を知る
どれだけ読み込まれたかのローディング状況を知りたい場合は、open、progress、complete、ioError、securityErrorイベントを使用します。
読み込み状況を知る
var url_loader : URLLoader = new URLLoader();
url_loader.addEventListener (Event.OPEN,URLLoaderOpenFunc);
function URLLoaderOpenFunc (event : Event) {
trace ("読み込みを開始した");
}
url_loader.addEventListener (ProgressEvent.PROGRESS,URLLoaderProgressFunc);
function URLLoaderProgressFunc (event : ProgressEvent) {
trace ("読込:" + event.bytesLoaded);
trace ("全体:" + event.bytesTotal);
trace ("パーセント:" + Math.floor(event.bytesLoaded/event.bytesTotal*100));
}
url_loader.addEventListener (Event.COMPLETE,URLLoaderCompleteFunc);
function URLLoaderCompleteFunc (event : Event) {
trace ("読み込みを完了");
}
url_loader.addEventListener (IOErrorEvent.IO_ERROR,URLLoaderIOErrorFunc);
function URLLoaderIOErrorFunc (event : IOErrorEvent) {
trace ("ファイル入出力のエラー");
}
url_loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR,
URLLoaderSecurityErrorFunc);
function URLLoaderSecurityErrorFunc (event : IOErrorEvent) {
trace ("セキュリティのエラー");
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.txt");
url_loader.load(url);
bytesLoaded プロパティ、 bytesTotal プロパティ を使用して調べる事もできます。
読み込み状況を知る
var url : URLRequest = new URLRequest("test.txt");
var url_loader : URLLoader = new URLLoader(url);
url_loader.load(url);
stage.addEventListener (Event.ENTER_FRAME,EnterFrameFunc);
function EnterFrameFunc (event : Event) {
trace ("読込:" + url_loader.bytesLoaded);
trace ("全体:" + url_loader.bytesTotal);
trace ("パーセント:" + Math.floor(url_loader.bytesLoaded / url_loader.bytesTotal*100));
}
■読み込んだテキストファイルが文字化けする
Unicode 以外のコードで保存されたテキストファイルを読み込むには System.useCodePage プロパティを true に変更します。
Unicode以外のコードで保存されたテキストファイルを読み込む
System.useCodePage = true;
XMLファイルを読み込む
サンプルをダウンロード
■URL ローダークラスをインスタンス化する
まず URL ローダークラスをインスタンス化します。引数にURLRequest型で XML ファイルまでの相対パスかURLを記述するとストリーミング読み込みを開始します。
|
new URLLoader ( URLRequest型 ); | ||||
|
ローダーオブジェクトを作成する
var url = new URLRequest("http://hakuhin.com/test.xml");
var url_loader : Loader = new URLLoader(url);
■読み込みを開始する
load() メソッドを使って読み込みを開始することも出来ます。引数にファイルまでの相対パスかURLを指定します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
|
URLLoader.load ( URLRequest型 , LoaderContext型 ); | ||||||
|
ファイルの読み込みを開始する
var url_loader : Loader = new Loader();
var url : URLRequest = new URLRequest("http://hakuhin.com/test.xml");
url_loader.load(url);
swfファイルからの相対パスを使う事もできる
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest("../text/test.xml");
loader_obj.load(url);
■読み込みを停止する
読み込みを停止したい場合は、close() メソッドを呼び出します。
ストリーム読み込みを開始していない場合、このメソッドを呼び出すことはできません。
ストリーム読み込みを開始していない場合、このメソッドを呼び出すことはできません。
読み込みを停止する
var url_loader : URLLoader = new URLLoader();
var url : URLRequest = new URLRequest("test.xml");
url_loader.load(url);
url_loader.close();
■読み込んだデータを表示する
読み込みに成功すると、data プロパティに String型 でデータが格納されます。この値を引数にして XML オブジェクトを作成します。
XML ファイルを読み込み トレース表示する
var url : URLRequest = new URLRequest("test.xml");
var url_loader : URLLoader = new URLLoader();
// 読み込み完了時に呼び出されるイベント
url_loader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
var xml : XML = new XML(url_loader.data);
trace(xml);
}
以下のようなXMLを読み込んだ場合、下のように演算子を使用して記述するとデータを取り出せます。
読み込むXMLファイル
<XML>
<data>テスト1</data>
<obj1 id = "属性1">
<data1>テスト2</data1>
<data2>テスト3</data2>
<data3>テスト4</data3>
</obj1>
<obj2 id = "属性2">
<data1>テスト5</data1>
<data2>テスト6</data2>
<data3>テスト7</data3>
</obj2>
</XML>
XMLオブジェクトからデータを取り出す
var url : URLRequest = new URLRequest("test.xml");
var url_loader : URLLoader = new URLLoader(url);
// 読み込み完了時に呼び出されるイベント
url_loader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
var xml : XML = new XML(url_loader.data);
trace(xml.data); // テスト1
trace(xml.obj1.@id); // 属性1
trace(xml.obj1.data1); // テスト2
trace(xml.obj1.data2); // テスト3
trace(xml.obj1.data3); // テスト4
trace(xml.obj2.@id)); // 属性2
trace(xml.obj2.data1); // テスト5
trace(xml.obj2.data2); // テスト6
trace(xml.obj2.data3); // テスト7
trace(xml.obj1.*); // 抽出
}
■ XML 文字列からオブジェクトに変換する
XMLDocumentクラスを使ったXML 文字列から Object型の変数に変換する関数です。
属性は無視されます。ノードとノードの間にテキストを挟まないでください。
属性は無視されます。ノードとノードの間にテキストを挟まないでください。
XMLオブジェクトからデータを取り出す関数
function XmlToObject (str : String) {
var result:XMLDocument = new XMLDocument();
result.ignoreWhite = true;
result.parseXML (str);
var obj:Object = _XmlToObject(result);
return obj.value;
}
function _XmlToObject (node:XMLNode):Object {
var i;
var obj : Object = new Object();
var child : Array = node.childNodes;
var l = child.length;
for (i=0; i < l; i++) {
var cld = child[i];
if (cld.nodeType == 1) {
var c : Object = _XmlToObject(cld);
obj[c.name] = c.value;
} else if (cld.nodeType == 3) {
return {name:node.nodeName,value:cld.nodeValue};
}
}
return {name:node.nodeName,value:obj};
}
使い方
var url : URLRequest = new URLRequest("test.xml");
var url_loader : URLLoader = new URLLoader(url);
// 読み込み完了時に呼び出されるイベント
url_loader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
var obj : Object = XmlToObject(url_loader.data);
}
■ストリーム読み込みのローティング状況を知る
どれだけ読み込まれたかのローディング状況を知りたい場合は、open、progress、complete、ioError、securityErrorイベントを使用します。
読み込み状況を知る
var url_loader : URLLoader = new URLLoader();
url_loader.addEventListener (Event.OPEN,URLLoaderOpenFunc);
function URLLoaderOpenFunc (event : Event) {
trace ("読み込みを開始した");
}
url_loader.addEventListener (ProgressEvent.PROGRESS,URLLoaderProgressFunc);
function URLLoaderProgressFunc (event : ProgressEvent) {
trace ("読込:" + event.bytesLoaded);
trace ("全体:" + event.bytesTotal);
trace ("パーセント:" + Math.floor(event.bytesLoaded/event.bytesTotal*100));
}
url_loader.addEventListener (Event.COMPLETE,URLLoaderCompleteFunc);
function URLLoaderCompleteFunc (event : Event) {
trace ("読み込みを完了");
}
url_loader.addEventListener (IOErrorEvent.IO_ERROR,URLLoaderIOErrorFunc);
function URLLoaderIOErrorFunc (event : IOErrorEvent) {
trace ("ファイル入出力のエラー");
}
url_loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR,
URLLoaderSecurityErrorFunc);
function URLLoaderSecurityErrorFunc (event : IOErrorEvent) {
trace ("セキュリティのエラー");
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.xml");
url_loader.load(url);
bytesLoaded プロパティ、 bytesTotal プロパティ を使用して調べる事もできます。
読み込み状況を知る
var url : URLRequest = new URLRequest("test.xml");
var url_loader : URLLoader = new URLLoader(url);
url_loader.load(url);
stage.addEventListener (Event.ENTER_FRAME,EnterFrameFunc);
function EnterFrameFunc (event : Event) {
trace ("読込:" + url_loader.bytesLoaded);
trace ("全体:" + url_loader.bytesTotal);
trace ("パーセント:" + Math.floor(url_loader.bytesLoaded / url_loader.bytesTotal * 100));
}
■読み込んだ XML ファイルが文字化けする
Unicode 以外のコードで保存されたテキストファイルを読み込むには System.useCodePage プロパティを true に変更します。
Unicode以外のコードで保存された XML ファイルを読み込む
System.useCodePage = true;
FLVファイルを読み込む
サンプルをダウンロード
■ネットコネクションクラスをインスタンス化する
まず ネットコネクションクラスをインスタンス化してローカルファイルアクセス用のコネクションを作成します。
ローカルファイルアクセス用のネットコネクションを作成する
var connection:NetConnection = new NetConnection();
connection.connect(null);
■ネットストリームクラスをインスタンス化する
先ほどのネットコネクションを使ってネットストリームクラスをインスタンス化します。
ネットストリームは、Flash Video 動画の再生等の制御に使います。
ネットストリームは、Flash Video 動画の再生等の制御に使います。
ネットストリームオブジェクトを作成する
var connection:NetConnection = new NetConnection();
connection.connect(null);
var netStream:NetStream = new NetStream(connection);
■画面上に表示する
次にビデオクラスをインスタンス化します。ビデオクラスはFlashVideo動画を表示するために使います。
ビデオクラスは、DisplayObject クラスから派生しています。
|
new Video ( 幅 , 高さ ); | ||||||
|
ビデオオブジェクトを作成する
var video_obj:Video = new Video();
ビデオオブジェクトを表示リストに登録すると画面上に表示する事ができます。ここでは、ステージの表示リストに登録します。
ビデオオブジェクトをステージの表示リストに登録する
var video_obj : Video = new Video();
stage.addChild(video_obj);
最後にビデオオブジェクトとネットストリームオブジェクトを関連付けます。
ビデオオブジェクトとネットストリームオブジェクトを関連付ける
var connection:NetConnection = new NetConnection();
connection.connect(null);
var netStream:NetStream = new NetStream(connection);
var video_obj : Video = new Video();
stage.addChild(video_obj);
video_obj.attachNetStream(netStream);
■ストリーム読み込みを開始して再生する
play() メソッドを使用するとストリーム読み込みを開始することができます。引数に FLV ファイルまでの相対パスかURLを指定します。
FLVファイルのストリーム読み込みを開始する
var connection:NetConnection = new NetConnection();
var netStream:NetStream = new NetStream(connection);
netStream.play("http://hakuhin.com/test.flv");
「flash.net.NetStream はコールバック onMetaData を呼び出すことができませんでした」
というエラーが出る場合は、メタデータ取得用のイベントを登録するといいようです。記述方法はこちら。
というエラーが出る場合は、メタデータ取得用のイベントを登録するといいようです。記述方法はこちら。
■ストリーム読み込みを切断する
close() メソッドを使用するとストリーム読み込みを終了します。
FlashPlayer が作成したローカルキャッシュは削除されますが、ブラウザのキャッシュは残る事があります。
FLVファイルのストリーム読み込みを終了する
var connection:NetConnection = new NetConnection();
var netStream:NetStream = new NetStream(connection);
netStream.close();
FlashPlayer が作成したローカルキャッシュは削除されますが、ブラウザのキャッシュは残る事があります。
■一時停止と再生を切り替える
動画を一時停止したい場合は、pause() メソッドを呼び出します。
一時停止
netStream.pause();
一時停止した動画を再び再生したい場合は、resume() メソッドを呼び出します。
一時停止状態の動画を再生
netStream.resume();
一時停止と再生を交互に繰り返したい場合は、togglePause() メソッドを呼び出します。
一時停止と再生を交互に
netStream.togglePause();
■再生位置(ヘッダ)を取得、変更する
現在再生中の位置(単位:秒)を取得するには time プロパティを使用します。
再生ヘッドの位置を調べる
var time : Number = netStream.time;
再生ヘッダの位置(単位:秒)を変更するには seek() メソッドを使用します。
再生ヘッドを15秒の位置に変更する
netStream.seek(15);
■ストリーム読み込みのローティング状況を知る
どれだけ読み込まれたかのローディング状況が知りたい場合は、bytesLoaded、bytesTotal、プロパティを使用します。
読み込み状況を知る
var connection:NetConnection = new NetConnection();
var netStream:NetStream = new NetStream(connection);
netStream.play("http://hakuhin.com/test.flv");
stage.addEventListener (Event.ENTER_FRAME,EnterFrameFunc);
function EnterFrameFunc (event : Event) {
trace ("読込:" + netStream.bytesLoaded);
trace ("全体:" + netStream.bytesTotal);
trace ("パーセント:" + Math.floor(netStream.bytesLoaded/
netStream.bytesTotal*100));
trace ("バッファが満たされていない状態の経過時間(秒):"
+ netStream.bufferLength);
}
また、ioError、netStatus イベントに対応しています。
イベント通知を受け取る
var connection:NetConnection = new NetConnection();
var netStream:NetStream = new NetStream(connection);
netStream.addEventListener (IOErrorEvent.IO_ERROR,URLLoaderIOErrorFunc);
function URLLoaderIOErrorFunc (event : IOErrorEvent) {
trace ("ファイル入出力のエラー");
}
netStream.addEventListener (NetStatusEvent.NET_STATUS ,URLLoaderProgressFunc);
function URLLoaderProgressFunc (event : NetStatusEvent) {
switch(event.info.code){
case "NetStream.Buffer.Empty":
trace("バッファが空になったので中断");
break;
case "NetStream.Buffer.Full":
trace("バッファを満たしたので再生");
break;
case "NetStream.Buffer.Flush":
trace("ストリーム読み込みが終了した");
break;
case "NetStream.Play.Start":
trace("再生の開始");
break;
case "NetStream.Play.Stop":
trace("再生の停止");
break;
case "NetStream.Play.StreamNotFound":
trace("FLV ファイルが見つからない");
break;
case "NetStream.Play.Failed":
trace("その他のエラー");
break;
case "NetStream.Seek.Failed":
trace("シークが失敗した");
break;
case "NetStream.Seek.InvalidTime":
trace("有効ではないシーク時間を指定した");
trace("指定可能なシーク時間 : " + event.info.details);
break;
case "NetStream.Seek.Notify":
trace("シーク操作を完了できた");
break;
default:
trace("その他のイベントコード:" + event.info.code);
}
}
netStream.play("http://hakuhin.com/test.flv");
■FLVファイルの情報を取得する
onMetaDataイベントハンドラを使うと再生を開始する直前にメタデータを通知してくれます。
適当なオブジェクトを作成し onMetaData プロパティにコールバック関数を入れておきます。そしてオブジェクトを NetStream.client プロパティに渡します。
FLV ファイルにメタデータが埋め込まれていない場合は呼び出されないのでここで得られる値をコンテンツに使用する場合は注意してください。
適当なオブジェクトを作成し onMetaData プロパティにコールバック関数を入れておきます。そしてオブジェクトを NetStream.client プロパティに渡します。
FLV ファイルにメタデータが埋め込まれていない場合は呼び出されないのでここで得られる値をコンテンツに使用する場合は注意してください。
イベント通知を受け取る
var connection:NetConnection = new NetConnection();
connection.connect(null);
var netStream:NetStream = new NetStream(connection);
var obj:Object = new Object();
obj.onMetaData = function(param:Object){
trace("総時間 : " + param.duration + "秒");
trace("幅 : " + param.width);
trace("高さ : " + param.height);
trace("ビデオレート : " + param.videodatarate + "kb");
trace("フレームレート : " + param.framerate + "fps");
trace("コーデックID : " + param.videocodecid);
var key:String;
for (key in param){
trace(key + ": " + param[key]);
}
}
netStream.client = obj;
netStream.play("http://hakuhin.com/test.flv");
■オーディオを制御する
soundTransform プロパティにアクセスするとオーディオにボリュームやパンといった効果を付けることができます。詳しくはこちらをご覧下さい。
オーディオやパンを変更する
var trans : SoundTransform = netStream.soundTransform;
trans.volume = 0.5; // ボリューム(0.0 〜 1.0)
trans.pan = 1; // パン(-1.0 〜 0.0 〜 1.0)
netStream.soundTransform = trans;
バイナリファイルを読み込む
サンプルをダウンロード
■URL ローダークラスをインスタンス化する
まず URL ローダークラスをインスタンス化します。引数は省略して下さい。
|
new URLLoader ( URLRequest型 ); | ||||
|
ローダーオブジェクトを作成する
var url_loader : Loader = new URLLoader();
■読み込む形式をバイナリに変更する
dataFormat プロパティを変更して読み込むファイルをバイナリ形式にします。
| 型 | 文字列 | 説明 |
| URLLoaderDataFormat. TEXT | "text" | テキスト形式で読み込みます。結果、data プロパティにString 型で格納されます。 |
| URLLoaderDataFormat. BINARY | "binary" | バイナリ形式で読み込みます。結果、data プロパティにByteArray 型で格納されます。 |
| URLLoaderDataFormat. VARIABLES | "variables" | URL エンコード形式の変数として受信します。 |
バイナリ形式で読み込む
url_loader.dataFormat = URLLoaderDataFormat.BINARY;
■読み込みを開始する
load() メソッドを使って読み込みを開始します。引数にファイルまでの相対パスかURLを指定します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
すでに読み込み中にもかかわらずこのメソッドを呼び出した場合は、以前の読み込み処理が終了し新しく読み込みを開始します。
|
URLLoader.load ( URLRequest型 , LoaderContext型 ); | ||||||
|
ファイルの読み込みを開始する
var url_loader : Loader = new Loader();
var url : URLRequest = new URLRequest("http://hakuhin.com/test.bmp");
url_loader.load(url);
swfファイルからの相対パスを使う事もできる
var loader_obj : Loader = new Loader();
var url : URLRequest = new URLRequest("../text/test.bmp");
loader_obj.load(url);
■読み込みを停止する
読み込みを停止したい場合は、close() メソッドを呼び出します。
ストリーム読み込みを開始していない場合、このメソッドを呼び出すことはできません。
ストリーム読み込みを開始していない場合、このメソッドを呼び出すことはできません。
読み込みを停止する
var url_loader : URLLoader = new URLLoader();
var url : URLRequest = new URLRequest("test.bmp");
url_loader.load(url);
url_loader.close();
■読み込んだデータにアクセスする
読み込みに成功すると、data プロパティに ByteArray型 でデータが格納されています。
バイナリデータにアクセスする
var url : URLRequest = new URLRequest("test.bmp");
var url_loader : URLLoader = new URLLoader();
// 読み込み完了時に呼び出されるイベント
url_loader.addEventListener (Event.COMPLETE,LoaderInfoCompleteFunc);
function LoaderInfoCompleteFunc (event : Event) {
var data : ByteArray = url_loader.data;
trace(data);
}
■ストリーム読み込みのローティング状況を知る
どれだけ読み込まれたかのローディング状況を知りたい場合は、open、progress、complete、ioError、securityErrorイベントを使用します。
読み込み状況を知る
var url_loader : URLLoader = new URLLoader();
url_loader.addEventListener (Event.OPEN,URLLoaderOpenFunc);
function URLLoaderOpenFunc (event : Event) {
trace ("読み込みを開始した");
}
url_loader.addEventListener (ProgressEvent.PROGRESS,URLLoaderProgressFunc);
function URLLoaderProgressFunc (event : ProgressEvent) {
trace ("読込:" + event.bytesLoaded);
trace ("全体:" + event.bytesTotal);
trace ("パーセント:" + Math.floor(event.bytesLoaded / event.bytesTotal * 100));
}
url_loader.addEventListener (Event.COMPLETE,URLLoaderCompleteFunc);
function URLLoaderCompleteFunc (event : Event) {
trace ("読み込みを完了");
}
url_loader.addEventListener (IOErrorEvent.IO_ERROR,URLLoaderIOErrorFunc);
function URLLoaderIOErrorFunc (event : IOErrorEvent) {
trace ("ファイル入出力のエラー");
}
url_loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR,
URLLoaderSecurityErrorFunc);
function URLLoaderSecurityErrorFunc (event : IOErrorEvent) {
trace ("セキュリティのエラー");
}
// 読み込み開始
var url : URLRequest = new URLRequest("test.bmp");
url_loader.load(url);
bytesLoaded プロパティ、 bytesTotal プロパティ を使用して調べる事もできます。
読み込み状況を知る
var url : URLRequest = new URLRequest("test.bmp");
var url_loader : URLLoader = new URLLoader(url);
url_loader.load(url);
stage.addEventListener (Event.ENTER_FRAME,EnterFrameFunc);
function EnterFrameFunc (event : Event) {
trace ("読込:" + url_loader.bytesLoaded);
trace ("全体:" + url_loader.bytesTotal);
trace ("パーセント:" + Math.floor(url_loader.bytesLoaded / url_loader.bytesTotal * 100));
}

