CASA Frameworkを試す

CASAが良いらしい、とよく聞くので使ってみる。クラスを一通り見てみると「LoadGroup」と「XmlUtil」あたりが便利そうだ。

「LoadGroup」を使うと複数のxmlや画像を一括管理で読み込む事ができる。今回は自分のTwitterのuserとfriendsのRSSをまとめて読み込んでみる。読み込んだ後はxpathにてノードを取得する。(CASAでもノード取得できるはずなんだけど、なぜかセレクトできなかったので。)

注目すべきは「new Percent(25)」の部分。読み込む対称に対して全体の何パーセントを割り当てるか、を設定できる。ここでは1つ目のxmlを読み込んだ時点で全体の25%読込完了となる。ローディングバーとかに細かく反映できたりしてこそばゆい。

読込が完了したら、「getXML()」でxmlに変換してやりxpathにて取り出す。trace文には Twitterの最新タイトルがそれぞれ表示されます。CASAを使うと、ちょこちょこしたスクリプトを簡便化できるので、地味だけど後からジワジワ効い てきます。「ArrayUtil」クラスとかも使う機会多いんじゃないかな。ちなみに画像をまとめて読み込む場合は「MediaLoad」クラスを使いま す。詳しくはドキュメントを参照されたし。

[sourcecode language=”js”]
import org.casaframework.load.LoadGroup
import org.casaframework.load.base.BytesLoadInterface;
import org.casaframework.load.data.xml.XmlLoad;
import org.casaframework.load.media.MediaLoad;
import org.casaframework.math.Percent;
import org.casaframework.util.XmlUtil;

//—–[xmlの取得先]
var userXML:XmlLoad = new XmlLoad(“http://twitter.com/statuses/user_timeline/6023282.rss?”+getTimer());
var friendsXML:XmlLoad = new XmlLoad(“http://twitter.com/statuses/friends_timeline/6023282.rss?”+getTimer());
var myLoadGroup = new LoadGroup();

//—–[初期化関数]
init();
function init()
{
//—–[ロードオブジェクトを追加]
myLoadGroup.addLoad(userXML, new Percent(25));
myLoadGroup.addLoad(friendsXML, new Percent(75));

//—–[オブザーバーの登録]
myLoadGroup.addEventObserver(this, LoadGroup.EVENT_LOAD_PERCENT, “onGroupLoadPercent”);
myLoadGroup.addEventObserver(this, LoadGroup.EVENT_LOAD_ERROR, “onGroupLoadError”);
myLoadGroup.addEventObserver(this, LoadGroup.EVENT_LOAD_COMPLETE, “onGroupLoadComplete”);
myLoadGroup.start();
}

//—–[ロードグループイベントハンドラー]
function onGroupLoadPercent(sender:LoadGroup, progress:Percent):Void
{
trace(“My group is ” + progress.getPercentage() + “% loaded.”);
}

function onGroupLoadError(sender:LoadGroup, failedLoad:BytesLoadInterface):Void
{
myLoadGroup.removeLoad(failedLoad);
myLoadGroup.start();
}

function onGroupLoadComplete():Void
{
trace(“xml complete”);

var userObj:Object = XmlUtil.xmlToObject(userXML.getXml())[‘rss’][0][‘channel’][0][‘item’];
var friendsObj:Object = XmlUtil.xmlToObject(friendsXML.getXml())[‘rss’][0][‘channel’][0][‘item’];

trace(userObj[1].title[0].nodeValue);
trace(friendsObj[1].title[0].nodeValue);
}

[/sourcecode]