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

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

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

Регистрация: Jul 2007
Сообщений: 37
По умолчанию Как узнать, кто дернул метод?

Собственно в perl есть удобнейшая всероенная функция caller(), которая возвращает массив, каждая ячейка из которого хранит полную информацию о месте/методе/функции которая вызвала этот caller(), следующая ячейка массива хранит место/метод/функция которая вызвала текущее "место" которое вызвало caller() и так до главной входящей точки main()

Собственно сесть ли аналоги во AS3. Может есть готовое решение, или как вообще олавливаются такие моменты?

Старый 22.09.2008, 18:49
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Нет, в AS3 этого нет.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
В дебаговом режиме можно выдать ошибку и посмотреть результат - в нем будет трейс стека, т.е. имена функций в той последовательности, в которой они были вызваны. В режиме релиза такой возможности нет.
__________________
Hell is the possibility of sanity

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

Регистрация: Jul 2007
Сообщений: 37
Цитата:
Сообщение от wvxvw Посмотреть сообщение
В дебаговом режиме можно выдать ошибку и посмотреть результат - в нем будет трейс стека, т.е. имена функций в той последовательности, в которой они были вызваны. В режиме релиза такой возможности нет.
Ошибка завершает выполнение кода. А если необходимо понаблюдать, и понять "кто" именно меняет переменную на определенное значение.

Ну нет, так нет. Очень жаль, надеюсь в будующем появится такая возможность!

Старый 23.09.2008, 11:01
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Это с чего вы взяли? =/ А try - catch для чего существует? Да и вообще, ошибка не завершает выполнение кода в любом случае, вас просто интерпрететор спросит, что с ней делать - прочитаете сообщение, и жмите на Continue. В смысле, не нужно создавать ошибку, которая приведет к остановке кода, просто чего-нть типа:
Код:
package 
{
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
	import mx.core.Application;
	
	public class Main extends Application
	{
		public function Main() { }
		
		public function init():void
		{
			var err:Error = new Error("my error", 123);
			try 
			{
				throw err;
			} catch (e:Error)
			{
				trace(err.getStackTrace());
			}
		}	
	}
}
Output:
Код:
Error: my error
	at Main/init()[D:\mxml\alert\src\Main.as:14]
	at alert/___alert_Main1_creationComplete()[D:\mxml\alert\src\alert.mxml:2]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.core::UIComponent/dispatchEvent()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:9051]
	at mx.core::UIComponent/set initialized()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:1167]
	at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:698]
	at Function/http://adobe.com/AS3/2006/builtin::apply()
	at mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8460]
	at mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8403]
и код спокойно продолжает выполняться...
__________________
Hell is the possibility of sanity

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

Регистрация: Jul 2007
Сообщений: 37
wvxvw: Понятно! Спасибо!

Старый 23.09.2008, 16:16
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ошибку выкидывать необязательно, можно просто вывести стек.

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

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

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


 


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


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