2007.07.03
category
comments

Pen ウェブ・クリエイターの仕事。

7/15発行のPenがWebを特集してます。Penは雑誌の中でも1,2を争うほど好きです。まだ読んでませんが、かなり期待できるんではないかと。今月号のWebデザインノートもやばかったですが、話題の人達をスポットにした記事は刺激になります。

2007.07.02
category
comments

G Map がバージョンアップ

flashにgoogleマップを簡単に取り込めるコンポーネント。久々に見たらバージョンアップしてた。かなり細かく再現できるみたい。markers, polylines, polygons, layersなどなど。ライセンスがどうなってんのか、いまいちよく分からない。個人で非商用ならOK?誰か教えてください。

G Map V. 2.5

2007.07.02
category
comments

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」クラスを使います。詳しくはドキュメントを参照されたし。

ACTIONSCRIPT:
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);
}

7/17追記
xpathを使わずにcasaのみでノードを取得するやり方が分かったのでコードを修正しました。

page 2 / 2«12