なので通信が終わるまでは表示されないものが多く殺風景なため、よくあるflashサイトのようになんかしらのloading中のアクションを入れてみようと思って検索したところ
http://blog.garden-place.jp/oborobeer/item_198.html
がいい感じでしたので利用させていただきました。
こちらのサイトで紹介されているスクリプトをコピーして、ブログパーツ用のaction scriptファイルが置いてある場所と同じ場所に
LoadingPicture.as
という名前で保存しました。
そして、サイトの例にあるとおりLoadingPictureのインスタンスを作成して、ブログパーツ用クラスのコンストラクタでshowメソッドとstartメソッドを呼んでいます。
そして通信の完了イベントがイベントリスナーで検知して、イベント検知後に呼ばれる関数内でLoadingPictureのremoveメソッドを呼んでグルグルを消しています。
大雑把に書くと、以下のような感じです。
package
{
import flash.display.*;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.text.TextField;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class BlogParts extends Sprite {
private var loading : TextField = new TextField();
private var loadPic : LoadingPicture = new LoadingPicture(30, 10, 9, 12, 0xC79810, 0xDDEEDD);
public function BlogParts() {
loadPic.show(this,stage.stageWidth/2,stage.stageHeight/2);
loadPic.start();
loading.text = "loading...";
addChild(loading);
loading.x = stage.stageWidth/2 - loading.textWidth/2;
loading.y = stage.stageHeight/2 - loading.textHeight/2;
loadXML();
}
private function loadXML():void {
var myLoader:URLLoader = new URLLoader();
myLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);
myLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
var urlPath:String = "http://aaaaa";
myLoader.load(new URLRequest(urlPath));
}
private function removeLoading():void {
removeChild(loading);
loadPic.remove();
}
private function errorHandler(e:IOErrorEvent):void {
removeLoading();
//以下でエラー処理を行う
}
private function loadCompleteHandler(event:Event):void {
removeLoading();
var loadedXml:XML = new XML(event.target.data);
//以下で読み込んだxmlを処理する
}
}
}
0 件のコメント:
コメントを投稿