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

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

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

Регистрация: Aug 2013
Сообщений: 73
По умолчанию Возможно ли отслеживать вызовы функций?

Всем доброй ночи. При создании программы на AS3 возник вопрос. Возможно ли каким-то образом отслеживать вызов определённой функции, не используя условия?

Старый 01.11.2013, 09:40
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
сам по себе вопрос довольно нелепо звучит, ибо ничего не мешает этот вызов в нем сам и отслеживать
Код AS3:
function someFunc():void
{
	trace( "someFunc" );// какие-то действия по 'отслеживанию'
}
чтобы понять о чем речь, надо бы знать для чего(в какой ситуации) это надо

Старый 01.11.2013, 14:53
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 3  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Отвечали уже.

Код AS3:
public static function getFunctionName(e:Error):String {
			//trace("**" +e.getStackTrace());
			var stackTrace:String = e.getStackTrace();     // entire stack trace
			var startIndex:int = stackTrace.indexOf("at ");// start of first line
			var endIndex:int = stackTrace.indexOf("()");   // end of function name
			var suffixTrace:String=stackTrace.substring(endIndex + 3);
			startIndex=suffixTrace.indexOf("at ");
			endIndex= suffixTrace.indexOf("()");   // end of function name
			suffixTrace=suffixTrace.substring(startIndex + 3, endIndex);
 
			return suffixTrace;
		}
 
trace(getFunctionName(new Error()))

Старый 01.11.2013, 15:34
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Babylon, а вы что имели ввиду?
как имя, вынутое из стека вызовов (к слову, только в дебаговой версии возможно) поможет отслеживать вызов определённой функции? мы его внутри этой функции не знаем что-ли?

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

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
так же хотел бы обратить ваше внимание на Sample, который по-своему может помочь в решении задачи.
__________________
местонахождение

Старый 01.11.2013, 15:43
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 6  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Цитата:
Сообщение от silin Посмотреть сообщение
Babylon, а вы что имели ввиду?
как имя, вынутое из стека вызовов (к слову, только в дебаговой версии возможно) поможет отслеживать вызов определённой функции? мы его внутри этой функции не знаем что-ли?
И как его узнать?

Старый 01.11.2013, 15:55
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Цитата:
Сообщение от Babylon Посмотреть сообщение
И как его узнать?
а зачем?
(поддержу уж стиль отвечать вопросом на вопрос Ж)

Добавлено через 3 минуты
ну и вообще-то
Код AS3:
function someFunc():void
{
	trace( "someFunc" );
}
что еще нужно узнать?

Добавлено через 8 минут
но мне не очень понятно зачем это нужно узнавать?

Старый 01.11.2013, 16:06
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 8  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Я использую для отладки. Очень удобно!

Старый 01.11.2013, 17:07
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 9  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Отследить все (или практически все) вызовы можно использую класс flash.trace.Trace

P.S. Метод не документирован((. Пример использования.
Не понятно, только зачем Вам это нужно.
__________________
http://www.chessmax.ru


Последний раз редактировалось Inet_PC; 01.11.2013 в 17:35.
Старый 01.11.2013, 18:19
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Если вам обязательно в новом методе выполнять нужные действия по вызову этой функции, можно просто отсылать в этой функции событие, и там где нужно его слушать.
Код AS3:
dispatchEvent(new Event("This is happening"));
 
this.addEventListener("This is happening", whenItHappens);
 
function whenItHappens(e:Event):void
{
   //Какие-либо действия
}

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

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

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


 


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


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