2010-12-05 5 views
0

純粋なAS3でFlashDevelopを使用してWebサイトをコーディングしていて、initでXMLファイルをロードするオブジェクトを持っています。読み込みが完了するまで私の主な機能を待たせる良い方法はありますか?私はonCompleteイベントについて知っていて、オブジェクト内でそれらを内部的に使用する方法を知っていますが、どのように進めるべきかはわかりません。ActionScript 3でオブジェクト内のデータをロードする方法

ありがとうございます!

答えて

1
package 
{ 
import flash.display.Sprite; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.events.Event; 
import flash.events.IOErrorEvent; 

public class HandleXMLData extends Sprite 
    { 
    private var xmlData:XML; 
    private var XMLFileURL:String = "myXML.xml"; 

    public function HandleXMLData() 
     { 
     var xmlLoader:URLLoader = new URLLoader(); 
     xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); 
     xmlLoader.addEventListener(Event.COMPLETE, xmlDataHandler); 
     xmlLoader.load(new URLRequest(XMLFileURL)); 
     } 

    private function xmlDataHandler(evt:Event):void 
     { 
     evt.target.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); 
     evt.target.removeEventListener(Event.COMPLETE, xmlDataHandler); 
     xmlData = new XML(evt.target.data); 

     init(); 
     } 

    private function errorHandler(evt:IOErrorEvent):void 
     { 
     throw(evt.text); 
     } 

    private function init():void 
     { 
     //Initialization Routine 
     } 
    } 
} 
+0

HandleXMLDataは、Spriteを拡張する必要はありません。 +1 –

+1

ドキュメントクラスの場合はそれを行います。これは "メイン"クラスの意味であると思います – momo

+0

ちょっとメモ。私はあなたが 'errorHandler'を投げるべきではないと思います。エラーをキャッチする方法はありません:非同期の 'ErrorEvent'のため、try/catchでキャッチできません。あなたはそれを再ディスパッチしないので、イベントリスナーでも捕まえられません。 –

関連する問題