Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.05.2014, 09:53
es2 вне форума Посмотреть профиль Отправить личное сообщение для es2 Найти все сообщения от es2
  № 1  
Ответить с цитированием
es2
 
Аватар для es2

Регистрация: Jan 2014
Сообщений: 14
По умолчанию var dump

Подскажите, существует ли в as3 что-то более продвинутое чем trace, с тем чтобы можно было определить к какому типу относится объект (и вообще объект ли это), какое значение имеет, обладает ли ещё какими-то доп. свойствами или методами (соответственно тогда какие у них значения, свойства методы), имеются ли значения undefined или null в каком либо свойстве данного объекта, или может сам объект является таковым.

Короче, что-то типа var_dump() как в php есть ли в as3?

Старый 25.05.2014, 09:56
FlasherEgor вне форума Посмотреть профиль Отправить личное сообщение для FlasherEgor Найти все сообщения от FlasherEgor
  № 2  
Ответить с цитированием
FlasherEgor

Регистрация: Nov 2013
Сообщений: 86
flash.utils - там есть несколько средств.

Старый 25.05.2014, 10:19
Korchy вне форума Посмотреть профиль Отправить личное сообщение для Korchy Найти все сообщения от Korchy
  № 3  
Ответить с цитированием
Korchy
 
Аватар для Korchy

Регистрация: May 2011
Сообщений: 301
Записей в блоге: 2
Все это покажет дебаггер и не нужно никаких дополнительных утилит.
__________________
interplanety

Старый 25.05.2014, 12:24
es2 вне форума Посмотреть профиль Отправить личное сообщение для es2 Найти все сообщения от es2
  № 4  
Ответить с цитированием
es2
 
Аватар для es2

Регистрация: Jan 2014
Сообщений: 14
Цитата:
Сообщение от Korchy Посмотреть сообщение
Все это покажет дебаггер и не нужно никаких дополнительных утилит.
Вот именно, что дебаггер покажет всё. А мне ненадо всё, мне надо только в конкретном месте посмотреть

Старый 25.05.2014, 14:14
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 5  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Ну это и трейсом всё можно выполнить, благо в AS3 там стало можно несколько параметров сразу выводить.

Старый 25.05.2014, 14:51
es2 вне форума Посмотреть профиль Отправить личное сообщение для es2 Найти все сообщения от es2
  № 6  
Ответить с цитированием
es2
 
Аватар для es2

Регистрация: Jan 2014
Сообщений: 14
представим себе объект:

Код AS3:
var obj:Vector<Object> = new Vector<Object>();
obj.push({tf : new TextField(), st: new String(), b : true});
obj.push({ta : new TextArea(), nb: 12, bs : new Object()});
obj.push({sp : new Sprite(), n: null, de : new DispatchEvent()});
как видите будет далеко не полная информация (если точнее, то вообще никакой полезной информации) даже если мы применим вот такую конструкцию:
Код AS3:
var i:int = obj.length;
while(--i > -1)
{
trace(obj[i])
}

Старый 25.05.2014, 15:03
FlasherEgor вне форума Посмотреть профиль Отправить личное сообщение для FlasherEgor Найти все сообщения от FlasherEgor
  № 7  
Ответить с цитированием
FlasherEgor

Регистрация: Nov 2013
Сообщений: 86
Можно так попробовать:
Код AS3:
function explore(target:Object):void
{
   for (var prop:String in obj)
   {
       trace('property: ' + prop + ' value: ' + obj[prop]);
   }
}
Но я не знаю, насколько верен и хорош такой способ.

Добавлено через 8 минут
Да, он не со всеми объектами работает...

Добавлено через 16 минут
Вот улучшенный вариант:
Код AS3:
public function exploreObject(o:Object, recursive:Boolean = true, logOffset:String = ''):void
	{
		for (var prop:String in o)
		{
			trace(logOffset + 'property: ' + prop + ' value:', o[prop]);
			if (recursive) exploreObject(o[prop], recursive, logOffset + '  ');
		}
	}
Опять же, работает, но не со всеми объектами, и не может просмотреть всё.


Последний раз редактировалось FlasherEgor; 25.05.2014 в 15:21.
Старый 25.05.2014, 21:34
es2 вне форума Посмотреть профиль Отправить личное сообщение для es2 Найти все сообщения от es2
  № 8  
Ответить с цитированием
es2
 
Аватар для es2

Регистрация: Jan 2014
Сообщений: 14
мне думается, что если по логике, то сперва нужно определить является ли переданное значение переменной или объектом, если это переменная, то выводим на экран её тип и значение, в том числе и значение undefined. Если же мы определили, что это объект и его значение не null, тогда вызываем эту же функцию рекурсивно. Хотя это тоже, мне думается не идеальный вариант, потому как такие объекты как DisplayObject нужно рассматривать в данном контексте как переменную

Старый 25.05.2014, 21:51
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 9  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Для дебага разработки — дебаггер в используемой IDE. Для рантайма продакшена или той же разработки и перестаем изобретать велосипеды.
__________________
тут я

Старый 25.05.2014, 21:58
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
является ли переданное значение переменной или объектом
Что-то я логики не улавливаю. Как можно сравнивать переменную и объект?
Цитата:
и вообще объект ли это
В ас3 абсолютно всё является объектами. В нем даже примитивов нет, Boolean и int и те являются объектами

Как и в любом другом языке (ну, почти), чтобы трейс выводил подробную информацию, у этого объекта должен быть метод toString() с подробным описанием всего необходимого.

Но если совсем по теме, то отладчик вам в помощь. В Adobe Flash CS* его нет, но он есть в любой нормальной IDE типа Flash Builder или FlashDevelop
__________________
Ко мне можно и нужно обращаться на ты)

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:37.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.