« ディープインパクト | Home | Null* in Sapporo »

Mar 092006

classの中でXMLのload

icon_flash8.jpgなんか昔なんかの案件で実装した気がするのだけど、今はまり中。
やりたいことはObjectベースのclassの中でxmlをsendAndLoadして、このオブジェクトの中で処理してしまいたいという感じ。たとえば

class test extends Object{
var private my_xml:XML;
function test(arg_1){
post_xml = new XML(arg_1);
my_xml = new XML();
my_xml.onLoad = function(result){
getData(this);
}
post_xml.sendAndLoad("sample.xml",my_xml);
}
function getData(arg){
trace(["data loaded",arg.firstChild.childNodes.length]);

}
}

見たいな感じ。onLoadの中のgetDataの参照先の指定がどーだったか思いだせない。そもそもこういう使いかたするならMovieClipをextendsしろってか?もしくはxmlNodeとかでextendsしてXML構造の中に持たせてもいいのかもしれんが、データ構造上なんか気味悪い気がする・・・。(あーでもsetter,getterを定義しておけばそんなXMLを意識させずに使えるかな?

13 Comments

しもた、parseXMLとか明らかに予約語を使ってしもた・・・汗

Function.callつかえばいいんじゃないでしょうか?
こんな感じで。

function test(scope, arg1) {
var post_xml = new XML(arg_1);
var my_xml = new XML();
my_xml.onLoad = function(result){
getData.call(scope, this);
}
post_xml.sendAndLoad("sample.xml",my_xml);
}

ありがとございます。
ただ"getData"もclassの中に収めたいんですよね・・・。この場合のscopeってインスタンスレベルじゃないんでしたっけ?

あ、違うなobjectレベルでいけるのか・・・。ちと試してみます。

できました。
ただ"call"ではうまく動作しませんでした。ただscopeを使って
---
my_xml.onLoad = function(result){
scope.getData(this);
}
---
でやればできました。そういわれれば昔そうやって解決したような記憶が・・・・汗
ほんと助かりましたありがとうございます!(そう言えばmaxiさんの会社にいるんでしたっけ??)

これで最後にXML展開終了後にmy_xmlをdeleteしてやれば綺麗なオブジェクトの完成ーー。
あとはsetter/getter設定してオブジェクトコンポーネントの出来上がりだーー。ワーィ。

あ、ちがった・・。
普通にvar my_xml = new XML()
でよかった・・。

あり?うまくいきませんでしたか・・・。
ぬぁ!間違ってました(汗。

正しくは。
---
function test(func, scope, arg1) {
var post_xml = new XML(arg_1);
var my_xml = new XML();
my_xml.onLoad = function(result){
func.call(scope, this);
}
post_xml.sendAndLoad("sample.xml",my_xml);
}
---
Functionも一緒に投げてやらないと、動かないんでした。失礼しましたー(汗。

あ、そうですー。
maxiさんの会社にいますー。
沖縄に来る時はぜひぜひ。

あ、なるほど。
この辺タイムラインに記述するときと同じ感覚でやってよく嵌ります・・。
>沖縄に来る時はぜひぜひ。
移住したいですw

自分もよくこんな間違いばかりしてます・・・。
>移住したいですw
移住っすかー、それもいいですねー。
ぜひぜひ、一度偵察しに来てみてくださいー(笑)

移住して漁師になりたいですw

だから漁師ビザで(以下略

じゃフィッシャーマンズスープレックスを・・・(以下略

Leave a comment

Search and Archives