flash.trace.Trace
, 26, 2008Да, есть такой класс, очень не приметный, но может быть очень полезным :)
Он делает отличную штуку :). После “запуска” выдаёт в output имена ВСЕХ! методов, которые запускаются с именами классов к которым они принадлежат. Класс не документирован, т.е. как с ним работать я не знаю (google тоже ничего не говорит), но методов проб и ошибок что-то удалось выяснить.
Вот все его методы (класс статический, т.е. все методы – статические):
- Trace.setLevel(l:int, target:int=2):Object
- Trace.getLevel(target:int=2):int
- Trace.setListener(f:Function):Object
- Trace.getListener():Function;
Trace.setLevel(l:int, target:int=2):Object
Устанавливает уровень вещания и цель вещания.
Первым параметром может быть одна из констант:
- Trace.METHODS_AND_LINES_WITH_ARGS = 4
- Название метода с входными параметрами и номер строки в коде с путём к класс, в котором был запущен метод
- Trace.METHODS_AND_LINES = 3
- Название метода и номер строки
- Trace.METHODS_WITH_ARGS = 2
- Название метода с входными параметрами
- Trace.METHODS = 1
- Только название метода
- Trace.OFF = 0
- Выключено
Вторым параметром может быть:
- Trace.LISTENER = 2
- Вещать в функцию, заданную с помощью setListener().
- Trace.FILE = 1
- Вещать в output.
Trace.getLevel(target:int=2):int
Возвращает уровень вещания для цели.
Trace.setListener(f:Function):Object
Устанавливает функцию-листенер при цели вещания = Trace.LISTENER.
Функция должна принимать 4 параметра:
private function traceListener( fileInfo:String, lineNumber:String, classAndMethod:String, methodArguments:String ):void
fileInfo – папка, где находится файл + “;” + что-то ещё (у меня была пустая строка) :) + “;” + имя файла.
Пример: “D:\Projects\ForTestsF3\src;;ForTestsF3.mxml”
lineNumber – номер строчки
classAndMethod – полное имя класса + (“/” || “$/” ) + имя метода.
Примеры: “flash.display::DisplayObjectContainer/addChild”
“flash.trace::Trace$/setListener” – “$/” используется, если метод статичный
methodArguments -входные параметры метода, разделённые запятой (,). Но если параметры заданы с помощью rest оператора (…), то они показаны не будут.
Trace.getListener():Function
Возвращает, заданную раньше, функцию-листенер.
Вот пример:
import flash.trace.Trace;
function test(t:String):String
{
return t;
}
Trace.setLevel(Trace.METHODS_WITH_ARGS, Trace.FILE);
var st:String = "hello!";
test(st);
stop();
В output увидите:
14554003 AVMINF: MTHD Untitled_fla::MainTimeline/test ("hello!") @ 0x042F0300
4554004 AVMINF: MTHD flash.display::MovieClip/stop () @ 0x0EF004D0
Огромное спасибо 7thsky за помощь!
