2009-10-08 19 views
8

hay una manera de rastrear un ARRAY en FLASH.Seguimiento de flash, volcado, impresión Variables de matriz

Quiero tener una salida similar a la de comandos los PHP: print_r(myArray)

para excepto: (flash):

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

mientras print_r (evento) en PHP exhibiría como cadena:

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

Quiero conseguir el mismo tipo de resultado en flash.

Respuesta

10

trace(array.join()); funcionaría para matrices indexadas numéricamente. Para matrices asociativas, debe usar for..in constructo.

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

for (var t: Object en el único tipo de bucle permitido es el tipo de cadena. , recibí el mensaje de error. –

+0

Pruebe para (var t en array) – Amarghosh

+0

'for (var t: Object in array)' funciona en el generador de Flex 3. ¿Puede publicar el mensaje de error que está recibiendo? – Amarghosh

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

hace el trabajo;)

SO Solucioné sizeof() evivalend a Array.sizeof();

¿Cómo ABOUT array.push() para Objects ??

2

Actionscript función de rastreo (en cualquier versión del lenguaje de ActionScript) es una gran lástima.

sólo trato que a reír:

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

trace(a); 

Una función de rastreo no debe vergüenza de hecho un bucle sobre los elementos del array y rastrear las matrices dentro de las matrices como el rastro AS3 función hace. Pero también debe verificar las referencias circulares entre las matrices internas y principales dentro de la matriz raíz que se rastrea. Esto puede implementarse de forma recursiva o iterativa.

Si no está de acuerdo con que la función del rastro de AS3 es mala, también considere el hecho de que esta función no le permitirá ver si una matriz está contenida dentro de otra. Me refiero a que este código:

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

trace(b); 

dará salida a esto:

1,2,3,4,5,6 

aunque podríamos esperar que este tipo de salida:

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

Y, finalmente, si tiene valores nulos o no definidos dentro sus matrices serán rastreados como cadenas vacías:

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

trace(b); 

voluntad salida de esto:

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

... !!! ...

2

intente esto:

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

No funcionó para mí usando Flash CC y AS3. – mhulse

Cuestiones relacionadas