サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

XML.onData

ID: FN0108012 Product: Flash

Platform: All
Version: 5.0 and above

シンタックス
my_xml.onData = function(source_str) {
  // ステートメントを記述
}

引数
source_str  サーバから送信された解析前のデータで、通常はXML形式。

[訳者註] XMLとして解析する前のソースデータを、ストリングで受取ります。ソースが正しくロードできなかったときは、undefinedが渡されます。

戻り値
なし。

説明
イベントハンドラ([訳者註] イベントハンドラメソッド); XMLテキストがサーバーから完全にダウンロードされるか、 サーバーからのダウンロード時にエラーが発生すると、呼び出されます。このハンドラ([訳者註] メソッド)は、XMLを解析する前に呼出されます。したがって、FlashのXML解析(パーサー)によらず、独自の解析ルーチンを実行するために使用されます。 XML.onDataメソッドは引数として、未定義値undefinedか、サーバーからダウンロードされたXMLテキストを内容とするストリングを受取ります。戻り値がundefinedであれば、サーバーからのXMLのダウンロード中にエラーが発生しています。

[訳者註] 原文はつぎのように、メソッドがundefinedかXMLテキストを「返す(return)」としています。しかし、これは引数として「受取る(recieve)」と解すべきです。本文は、この解釈により修正しています。

原文: The XML.onData method returns either the value undefined, or a string that contains XML text downloaded from the server.

[訳者註2] このメソッドは、XMLデータがロードされ終えた時点で、呼び出されます。その後、XMLテキストの解析およびXMLツリーの設定がなされると、'XML.onLoad'メソッドが呼ばれます。'XML.onData'メソッドが'undefined'を受取ったときには、'XML.onLoad'メソッドには引数として'false'が渡されます。ソースを正しく受取ると、XMLテキストの解析が行われ、'XML.loaded'プロパティは'true'に設定されたうえで、'XML.onLoad'メソッドが'true'を引数として呼び出されます。

デフォルトでは、XML.onDataメソッドは、XML.onLoadメソッドを呼び出します。 XML.onDataメソッドは、独自の処理に書替える(オーバーライドする)ことができます。ただし、その場合XML.onLoadは、XML.onDataの処理中で独自に呼出さないかぎり、もはや呼出しはされなくなります。

Player
Flash Player 5以降。


以下のサンプルは、'XML.onData'メソッドがデフォルトでどのような処理を行うかを示します。

XML.prototype.onData = function (src) {
  if (src == undefined) {
    this.onLoad(false);
  } else {
    this.parseXML(src);
    this.loaded = true;
    this.onLoad(true);
  }
}

'XML.onData'メソッドを書替える(オーバーライドする)と、XMLテキストの解析をしないということも可能です。

[訳者註] このサンプルは、XML.onDataメソッドのデフォルトの処理をActionScriptでシミュレートした場合のコードです。したがって、「説明」の[訳者註2]で解説した処理が、その内容となっています。

[訳者註2] 同階層のテキストファイル「Sample.txt」からロードしたソースを、解析前のテキストのまま出力ウィンドウに表示するサンプルは、以下のとおりです(出力の最初に、typeof演算子を使って、ソースがテキスト("string")として渡されていることを確認しています)。この例では、XML.onDataメソッドを書替えたので、XML.onLoadメソッドは呼出されません。

oXML = new XML();
oXML.onData = xTraceText;
function xTraceText (sSource) {
  trace ("ソースデータ: "+typeof sSource+"\n"+sSource);
}
oXML.load("Sample.txt");

出典
Flash MX 2004 LiveDocs ActionScript DictionaryXML.onDataの項より邦訳。

_____

作成者: 野中文雄
更新日: 2004年6月12日 Flash MX 2004のドキュメントに合わせて記述を修正
更新日: 2003年7月21日 Flash MXのActionScript Dictionary(英文改訂版)を元に文章を補正
更新日: 2001年12月8日 ActionScript Dictionaryの不適切な記述を訂正し補足するための訳者註を追加
更新日: 2001年11月13日 訳の若干の修正と訳者註の追加
作成日: 2001年8月16日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.