flash.trace.Trace
Да, есть такой класс, очень не приметный, но может быть очень полезным
Он делает отличную штуку :). После “запуска” выдаёт в 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 за помощь!
Таґи: flash.trace.Trace
май 26, 2008 в 22:57
у Trace.setLevel - есть второй параметр. Trace.FILE, Trace.LISTENER - это я понял для этого.
[code]
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.trace.*;
import flash.utils.describeType;
public class testAS3
extends Sprite {
public function testAS3 () {
addEventListener(Event.ADDED_TO_STAGE, processInitialization);
}
private function processInitialization (… params):void {
Trace.setLevel (Trace.METHODS_AND_LINES_WITH_ARGS, Trace.FILE);
Trace.setListener (traceHandler);
trace (describeType (Trace));
}
private function traceHandler (… params):void {
var a:int = 5;
a++;
}
}
}
[/code]
В таком варианте не запускается листинер. если поставить Trace.LISTENER - то на каждый вызов запускается traceHandler, который получает 4 параметра
1 - строка с параметрами (разделенные “;”) там директория, еще чего то, название файла
2 - номер стоки
3 - класс + имя метода
4 - хрен его знает чего - может наймспайс…
май 26, 2008 в 23:42
спарведливо для сдк 3.0.0, я думаю что это появилось в какой то из версий плеера например 9.0.115 +
май 27, 2008 в 7:15
Это для flex-профайлера сделано было, если найду ссылку отпишу.
май 27, 2008 в 10:20
до 7thsky:
Дякую! А я як тільки не пробував, не виходило “завести” лістенер
до yoyo:
Чекаю на посилання!
июнь 12, 2008 в 10:57
А где этот класс можно найти не подскажете?
июнь 12, 2008 в 11:47
Этот класс “встроен” в последине апдейты флэш плеера.
У меня работает в 9.0.115.
июнь 12, 2008 в 12:09
а как мне из своего flex приложения получить доступ к его методам?
июнь 12, 2008 в 12:42
Попробуйте так:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import flash.trace.Trace;
]]>
</mx:Script>
<mx:creationComplete>
<![CDATA[
Trace.setLevel(Trace.METHODS_AND_LINES_WITH_ARGS, Trace.FILE);
]]>
</mx:creationComplete>
</mx:Application>
Но если Вы используете Flex Builder ниже 3-й версии, то это у Вас не получиться, т.к. его там просто нет
июнь 12, 2008 в 12:48
нет)) ну про импорты я конечно знаю. Дело в том что у меня почемуто билдер не видит данного класса. Просто напросто нету его. Хотя стоит flash player 9.0.115
июнь 12, 2008 в 12:51
мне бы просто .as файлик этот раздобыть. Просто нужно в очень сжатые сроки логгер написать)
июнь 12, 2008 в 13:01
там нету аs файла
этот класс находится в playerglobal.swc
а его описание в Global.as который находиться здесь:
{путь_к_workspace_Flex_Builder_3}\.metadata\.plugins\com.adobe.flexbuilder.codemodel\extraClassPath\Global.as
Можно войти в Global.as если клацнуть F3 на Number, например.
думаю Вам можно попробовать скачать последнюю версию Flex SDK и обновить Вашу.
http://www.adobe.com/ru/cfusion/entitlement/index.cfm?e=flex3email
июнь 12, 2008 в 13:14
спасибо большое)
июнь 18, 2008 в 15:08
ещё одна проблемка.
При выводе лога в файл, а именно при установке парметра Trace.LISTENER и при использовании обработчика принимающего 4 параметра сыпятся эксепшены причём в классах самого Flex SDK. Я уверен что проблема именно в функции обработчике. Можно ли это как нибудь побороть?
июнь 20, 2008 в 13:53
Я Вам ответил на почту (creeping.by(собачка)gmail(точка)com).
Если Вы не получали письма, напишите пожалуйста
август 11, 2008 в 16:04
http://hg.mozilla.org/ru/tamarin-central/index.cgi/file/e774dfe22b39/extensions/Trace.as
август 14, 2008 в 8:40
Сорри за оффтоп, кто-нить смотрел ролики на ютьюбе про конец света? Ну, про андронный колайдер
Ваще страшно!
август 15, 2008 в 15:42
Ну, вот… так всегда: сначала все путем, а потом пошло-поехало…
август 17, 2008 в 16:57
Ну, вы тут развернули полемику! Надо же по сути писать, а не распаляться по мелочам.
август 18, 2008 в 0:09
Что ж… время и жизнь покажут, как все будет
август 18, 2008 в 14:26
Млин, ну, как с любимым сериалом по тв впрямь - сначала ждещь серию, смотришь, а потом злишься, что следующую серию опять ждать несколько дней. Када продолжение будет?
август 18, 2008 в 17:22
Хм… не многие позволяют себе так откровенно говорить об этом. Молодцом!
август 19, 2008 в 13:34
Что ж… и такое мнение допустимо. Хотя, думаю, возможны и другие варианты, так что не огорчайтесь.
август 20, 2008 в 14:48
Вот есть дни медработника, шахтера, учителя, а день блоггера када? Кто-нить в курсе?
август 20, 2008 в 18:21
Прикольный пост, понравилось. Мне нравится, что об этом хоть кто-то говорит без смущений.
август 21, 2008 в 11:38
Уважаю всех, кто не боится так сказать, и вас в том числе.
август 26, 2008 в 2:43
Спасибо за такой пост, всё подробно расписано и что самое гланое доступно для читателя. Узнал много новых вещей, но большинство что Вы рассказали не встречал в жизни.
август 26, 2008 в 9:22
Аааа! В рот мне ноги!
август 27, 2008 в 4:50
у каждого своя жизнь