サイトトップ

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

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

ObjectDumper.toString()メソッド

ID: FN0510005 Product: Flash

Platform: All
Version: Flash MX 2004 and above

*このクラスは、ドキュメント化されていません。Flash MX 2004でこのクラスを使用するには、「Flash MX 2004 ActionScript 2.0対応Macromedia Flash Remoting」をインストールする必要があります[*1]。

ActionScriptクラス名: mx.data.binding.ObjectDumper

シンタックス[*2][*3]
public static toString(obj:Object [, showFunctions:Boolean, showUndefined:Boolean, showXMLstructures:Boolean, maxLineLength:Number, indent:Number]) : String

[*1] 「Flash MX 2004 ActionScript 2.0対応Macromedia Flash Remoting」をインストールしていない場合も、[ウィンドウ] > [その他のパネル] > [サンプルライブラリ] > [クラス]を開き、DataBindingClassesコンポーネントをステージにドロップすると、ObjectDumperクラスが使えるようになります(厳密にはステージ上になくても、[ライブラリ]に存在すれば結構です)。

図001■クラスライブラリのDataBindingClasses

[*2] 従来のシンタックスの記述にしたがえば、つぎのとおりです。

ObjectDumper.toString(obj, showFunctions, showUndefined, showXMLstructures, maxLineLength, indent)

[*3] ObjectDumperクラス内における実際のメソッド定義には、引数の型指定はされていません。

スクリプト001■ObjectDumperクラス(抜粋)

class mx.data.binding.ObjectDumper
{
   public static function toString(obj, showFunctions, showUndefined, showXMLstructures, maxLineLength, indent)

引数
obj:Object - プロパティを調べる対象のオブジェクト。

showFunctions:Boolean [省略可能] - プロパティがFunctionオブジェクト(メソッド)の場合に、戻り値(の文字列)に加えるかどうかを指定するブーリアン(論理)値。trueを指定すると、function名がプロパティとして、値は"function"という文字で表示されます。それ以外の値を引数にすれば、function(関数)は省きます。

showUndefined:Boolean [省略可能] - プロパティが存在しても値がundefinedのとき、戻り値(の文字列)に加えるかどうかを指定するブーリアン(論理)値。trueを指定すると、値がundefinedのプロパティ名も加わり、値は"-"という文字で表示されます。それ以外の値を引数にすれば、値がundefined変数は省きます。

showXMLstructures:Boolean [省略可能] - XMLをオブジェクトとして扱って、その構造を表示するかどうか指定するブーリアン(論理)値。trueを指定すると、XMLオブジェクトのプロパティを取出します。それ以外の値を引数にすれば、XMLはタグテキストの形式で表示します。

maxLineLength:Number [省略可能] - 1行当たりの最大文字数を指定します。最大文字数を超えると、プロパティごとにインデントを入れて改行します[*4]。プロパティと値の合計文字数が最大文字数を超えても、途中改行はしません。デフォルト値は100です。

indent:Number [省略可能] - 改行時に入れるインデントの数。1インデントが半角スペース5個です。0を指定すると、改行時に1インデント挿入されます[*5]。デフォルトは0です。

[*4] 処理中に使用される制御文字も、文字数にカウントされるようです。したがって実際には、最大文字数より少ない字数でも改行されます。

[*5] インデントをなくすには、引数に-1を指定します。

戻り値
オブジェクトのもつプロパティ名と値が記述されたストリング(文字列)。

説明
オブジェクトのプロパティを、「プロパティ:値」のかたちで文字列に変換します。一般のオブジェクトはプロパティが「{}」で、配列は「[]」で括られます。また、文字列はダブルクォーテーション「""」で括られます。

trace()ステートメントは、オブジェクトを"[object Object]"としか表示できません。ObjectDumper.toString()メソッドを用いると、オブジェクトの内容を構成するプロパティが詳細に確認できます。ActionScript定義済みのクラスのプロパティやメソッドは、表示されません[*6]。


つぎの例は、Objectインスタンスobjのプロパティを、[出力]パネルに表示します[*6]。

スクリプト002■オブジェクトのプロパティを出力する

// フレームアクション
import mx.data.binding.ObjectDumper;
var obj:Object = {a:0, b:"string", c:null, d:undefined, e:NaN, f:Infinity};
obj.g = function() {};
obj.h = obj;
obj.i = [0, "1"];
obj.j = {k:this};
trace(ObjectDumper.toString(obj));
// [出力]:
{a: 0, b: "string", c: null, e: NaN, f: Infinity, h: ***, i: [0, "1"], j: {k: _level0}}

trace(ObjectDumper.toString(obj, true, true));
// [出力]:
{a: 0,
     b: "string",
     c: null,
     d: -,
     e: NaN,
     f: Infinity,
     g: function,
     h: ***,
     i: [0, "1"],
     j: {k: _level0}}


[*6] 非ドキュメントの関数ASSetPropFlasgs()を使うと、ActionScript定義済みクラスのプロパティやメソッドを表示することも可能です。たとえば、つぎのスクリプトは、Mathクラスのプロパティとメソッドを[出力]パネルに表示します。

スクリプト003■Mathクラスのプロパティとメソッドを出力する

import mx.data.binding.ObjectDumper;
ASSetPropFlags(Math, null, 6, true);
trace(ObjectDumper.toString(Math, true));
// [出力]:
{E: 2.71828182845905,
     LN10: 2.30258509299405,
     LN2: 0.693147180559945,
     LOG10E: 0.434294481903252,
     LOG2E: 1.44269504088896,
     PI: 3.14159265358979,
     SQRT1_2: 0.707106781186548,
     SQRT2: 1.4142135623731,
     __proto__: {},
     abs: function,
     acos: function,
     asin: function,
     atan: function,
     atan2: function,
     ceil: function,
     constructor: function,
     cos: function,
     exp: function,
     floor: function,
     log: function,
     max: function,
     min: function,
     pow: function,
     random: function,
     round: function,
     sin: function,
     sqrt: function,
     tan: function}

Player
ActionScript 2.0/Flash Player 7以降。

参考
Flash | Retrospective「mx.data.binding.ObjectDumper

_____

作成者: 野中文雄
作成日: 2005年10月11日


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