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!”) @ 0×042F0300
- 4554004 AVMINF: MTHD flash.display::MovieClip/stop () @ 0×0EF004D0
Дуже дякую 7thsky за допомогу!
