FlashのXMLクラスのonLoadハンドラが呼ばれません。どうしてでしょう? (Flash MX Action Script)


test.xmlに何か文字が書き込まれている場合は、以下のコードは期待通り動作します。
ところが、test.xmlに何も書き込まれていない場合(つまり0バイト)の時、onLoadハンドラが呼ばれません。何故ですか? 回避方法は?

----------------------------
var doc:XML = new XML();

doc.onLoad = function(success:Boolean)
{
trace(”onLoad!”);
trace(this);
}

doc.load(”test.xml”);

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/07/28 14:17:03
  • 終了:--

回答(3件)

id:tiga No.1

しいたけ回答回数107ベストアンサー獲得回数02005/07/28 14:44:27

ポイント20pt

http://www.fumiononaka.com/TechNotes/Flash/FN0108012.html

FN0108012 - XML.onData - Flash : テクニカルノート

今、試す環境がないので推測ですが、XML.onDataをカスタマイズして、引数でもらえる生のXMLデータが0byte(null? undefined?)かどうかチェックしてみてはどうでしょうか?


ヘルプのXML.onDataあたりも見てみてください。

id:nekomilk

onDataすらも呼ばれませんでした。

2005/07/28 15:00:56
id:tiga No.2

しいたけ回答回数107ベストアンサー獲得回数02005/07/28 16:11:45

ポイント20pt

http://www.hatena.ne.jp/1122527823

人力検索はてな - FlashのXMLクラスのonLoadハンドラが呼ばれません。どうしてでしょう? (Flash MX Action Script) test.xmlに何か文字が書き込まれている場合は、以下のコードは期待通り動..

URLはダミーです。


添付されているスクリプトはMX2004のActionScript2.0形式のようですが、nekomilkさんが使っているFLASHはMXですか?MX2004でしょうか?

もしお使いのFLASHがMX2004だったらパブリッシュ設定でActionScriptのバージョンが2.0になっているか確認してみてください。


もしMXだったら、以下で試してみてください。


----------------------------

var doc = new XML();


doc.onLoad = function(success){

trace(”onLoad!”+success);

}


doc.load(”test.xml”);


----------------------------


しかし、MXにAS2.0で書いてもエラーも何もでないんですね(汗)

知りませんでした。

id:nekomilk

バージョンを確認した所、

FLASH MX Professional 2004 Version 7.2

で、パブリッシュ設定では ActionScript2.0が

指定されていました。

事前に0バイトとわかるだけでも助かるのですが…。

2005/07/28 16:47:42
id:hal-u No.3

hal-u回答回数21ベストアンサー獲得回数02005/07/28 20:30:39

ポイント20pt

http://www.fumiononaka.com/TechNotes/Flash/FN0303007.html

FN0303007 - LoadVarsオブジェクトを使った外部テキストファイルの読込み - Flash : テクニカルノート

LoadVarsクラスでもonLoadハンドラは反応しないですが、getBytesLoaded()でデータサイズはとれます。

あとは、読み込んだデータをXML解析するようにすればいいのではないでしょうか。


var doc:LoadVars = new LoadVars();


doc.load(”test.xml”);


trace(doc.getBytesLoaded());

id:nekomilk

getBytesLoaded()は、ロードされたバイト数を示すのではないでしょうか。中身のあるファイルに対して呼び出してみましたが0でした。

getBytesTotal()というのも見つけましたが、load直後に呼び出しても undefinedでした。

どうしよう。

2005/07/29 09:58:41
  • id:takeo_shiino
    あの後どうなりましたでしょうか。

    あのあと私もMX2004で観てみたのですが、MX2004のデバッグ実行では、ファイルサイズが0byteのXMLをloadしたときにonLoadやonDataイベントが発生していないような気がします。

    しかしデバッグテキスト表示用のテキストフィールドを置いてみたりして確認したところブラウザのプラグインやスタンドアローンプレイヤーではonLoadイベントが発生しているようでした。

    あと、これはファイルのサイズが0byteではなくなってしまうのですが、BOM付きUTF-8形式で保存したXMLに関しては中味が空っぽでもonLoadイベントが発生しているようです。(サイズが0byteではないので)

    これってデバッガのバグなんでしょうか?
  • id:nekomilk
    Re:あの後どうなりましたでしょうか。

    忙しくて、質問を放置していました…。(^^; 皆さん、すみません。
    確かに開発環境上でしかテストしていませんでした。
    明日、パブリッシュしてやってみよう…。
  • id:nekomilk
    player上だと

    player上だと期待通り動作しました。開発環境のBugなのかな。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません