2009-05-08

ブログパーツの通信終了待ちのグルグル回転

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
今回のブログパーツは、サイトと通信をしています。
なので通信が終わるまでは表示されないものが多く殺風景なため、よくある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 件のコメント: