Flash跟踪,转储,打印数组变量

时间:2009-10-08 10:30:31

标签: arrays flash

有没有办法在FLASH中跟踪ARRAY。

我想要一个类似于PHPs命令的输出:print_r(myArray)

for ex :(在flash中):

var event:Array = new Array();
event['name']='david';
trace(event);  // that display anything

而PHP中的print_r(event)将显示为字符串:

Array {
['name'] => david,
}

我想在flash中实现同样的结果。

6 个答案:

答案 0 :(得分:10)

trace(array.join());适用于数字索引数组。对于关联数组,您必须使用for..in构造。

for(var t:Object in array)
  trace(t + " : " + array[t]);

答案 1 :(得分:2)

Actionscript trace 函数(在任何actionscript语言版本中)都是一个很大的耻辱。

试着笑一笑:

var a :Array = [1,2,3];
var b :Array = [4,5,6, a];
a[3] = b;

trace(a);

一个非可耻的跟踪函数确实应该遍历数组的元素并跟踪数组内的数组,就像AS3 trace 函数那样。但是它还应该检查被跟踪的根数组内部和父数组之间的循环引用。这可以以递归或迭代的方式实现。

如果你不同意AS3 trace 功能不好,那么还要考虑这个功能不会让你看到一个数组是否包含在另一个中的事实。我的意思是这段代码:

var a :Array = [1,2,3];
var b :Array = [a, 4,5,6];

trace(b);

将输出:

1,2,3,4,5,6

虽然我们可以期待这种输出:

[1,2,3],4,5,6

最后,如果你的数组中有null或未定义的值,那么它们将被追踪为空字符串:

var a :Array = [1,2,undefined,3];
var b :Array = [4,5,6, null, a];

trace(b);

将输出:

4,5,6,,1,2,,3

...... !!! ...

答案 2 :(得分:2)

试试这个:

import mx.utils.ObjectUtil;
trace(ObjectUtil.toString(event));

答案 3 :(得分:1)

function obj_size (o:Object){
    var n=0;
    for (var x in o)
        n++;
    return n;
}

工作;)

SO I SOLVED sizeof()evivalend to Array.sizeof();

如何关于对象的array.push()

答案 4 :(得分:1)

您是否尝试在.toString上使用Array方法?

trace( myArray.toString() );

以下是文档参考:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Array.html#toString()

或者,如果您使用关联数组,那么跟踪其值的方法是:

for (var prop:String in myArray)
{
    trace( prop, " = ", myArray[prop] );
}

答案 5 :(得分:0)

trace(JSON.stringify(your_complex_variable, null, 2))

number参数用于缩进。参见https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/JSON.html#stringify()