2009-10-08 23 views
8

有没有办法在FLASH中跟踪ARRAY。闪存跟踪,转储,打印数组变量

我希望有类似PHP的命令的输出:print_r(myArray)

为前:(闪光灯):

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

同时的print_r(事件)在PHP中会显示为字符串:

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

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

回答

10

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

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

for(var t: 中的对象允许循环的唯一类型是字符串类型。 ,有错误信息。 – 2009-10-08 10:46:39

+0

尝试(var t在数组中) – Amarghosh 2009-10-08 10:53:48

+0

'for(var t:Object in array)'在Flex builder 3中工作。您可以发布您收到的错误消息吗? – Amarghosh 2009-10-08 10:59:27

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

不工作;)

SO我解决的sizeof()evivalend到Array.sizeof();

How about array.push()for Objects ??

2

Actionscript trace函数(在任何动作语言版本中)是一个非常大的耻辱。

只是尝试笑:

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

trace(a); 

非可耻的跟踪功能的确应该遍历数组元素和微量元素的阵列内部的阵列作为AS3 跟踪功能一样。但它也应该检查被跟踪的根数组内部和父数组之间的循环引用。这可以通过递归或迭代的方式来实现。

如果你不同意AS3 跟踪函数是坏的,那么也要考虑一个事实,即这个函数不会让你看到一个数组是否被包含在另一个中。我的意思是这个代码:

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或undefined值你的阵列,然后他们将被追查为空字符串:

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

trace(b); 

将输出这样的:

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

... !!! ...

2

试试这个:

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

对于我来说,使用Flash CC和AS3并不适用。 – mhulse 2015-07-14 20:57:42