Flash трассировка, дамп, печать переменных массива - PullRequest
8 голосов
/ 08 октября 2009

есть ли способ отследить массив во флэш-памяти.

Я хочу получить вывод, похожий на команду PHPs: print_r(myArray)

для примера: (во вспышке):

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

в то время как print_r (событие) в PHP будет отображаться как строка:

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

Я хочу добиться такого же результата во вспышке.

Ответы [ 5 ]

10 голосов
/ 08 октября 2009

trace(array.join()); будет работать для численно индексированных массивов. Для ассоциативных массивов вы должны использовать for..in construct.

for(var t:Object in array)
  trace(t + " : " + array[t]);
2 голосов
/ 06 февраля 2013

Попробуйте это:

import mx.utils.ObjectUtil;
trace(ObjectUtil.toString(event));
2 голосов
/ 19 июля 2011

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

И, наконец, если у вас есть нулевые или неопределенные значения внутри ваших массивов, они будут отслеживаться как пустые строки:

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

trace(b);

выведет это:

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

... !!! ...

1 голос
/ 19 июля 2011

Вы пытались использовать метод .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] );
}
1 голос
/ 08 октября 2009
function obj_size (o:Object){
    var n=0;
    for (var x in o)
        n++;
    return n;
}

РАБОТАЕТ;)

ТАК, КАК Я РЕШИЛ sizeof () evivalend в Array.sizeof ();

Как насчет array.push () для объектов ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...