Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Возможно ли отслеживать вызовы функций? (http://www.flasher.ru/forum/showthread.php?t=204502)

dendead 01.11.2013 07:37

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

silin 01.11.2013 09:40

сам по себе вопрос довольно нелепо звучит, ибо ничего не мешает этот вызов в нем сам и отслеживать
Код AS3:

function someFunc():void
{
        trace( "someFunc" );// какие-то действия по 'отслеживанию'
}

чтобы понять о чем речь, надо бы знать для чего(в какой ситуации) это надо

Babylon 01.11.2013 14:53

Отвечали уже.

Код 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()))


silin 01.11.2013 15:34

Babylon, а вы что имели ввиду?
как имя, вынутое из стека вызовов (к слову, только в дебаговой версии возможно) поможет отслеживать вызов определённой функции? мы его внутри этой функции не знаем что-ли?

СлаваRa 01.11.2013 15:43

так же хотел бы обратить ваше внимание на Sample, который по-своему может помочь в решении задачи.

Babylon 01.11.2013 15:43

Цитата:

Сообщение от silin (Сообщение 1150843)
Babylon, а вы что имели ввиду?
как имя, вынутое из стека вызовов (к слову, только в дебаговой версии возможно) поможет отслеживать вызов определённой функции? мы его внутри этой функции не знаем что-ли?

И как его узнать?

silin 01.11.2013 15:55

Цитата:

Сообщение от Babylon (Сообщение 1150846)
И как его узнать?

а зачем?
(поддержу уж стиль отвечать вопросом на вопрос Ж)

Добавлено через 3 минуты
ну и вообще-то
Код AS3:

function someFunc():void
{
        trace( "someFunc" );
}

что еще нужно узнать?

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

Babylon 01.11.2013 16:06

Я использую для отладки. Очень удобно!

Inet_PC 01.11.2013 17:07

Отследить все (или практически все) вызовы можно использую класс flash.trace.Trace

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

ZackMercury 01.11.2013 18:19

Если вам обязательно в новом методе выполнять нужные действия по вызову этой функции, можно просто отсылать в этой функции событие, и там где нужно его слушать.
Код AS3:

dispatchEvent(new Event("This is happening"));
 
this.addEventListener("This is happening", whenItHappens);
 
function whenItHappens(e:Event):void
{
  //Какие-либо действия
}



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

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