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/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/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
у каждого своя жизнь
Серпень 28, 2008 в 13:13
Спасибо, хорошая статья. Подписался.
Серпень 29, 2008 в 14:14
Спасибо за информацию. Может, подскажете где еще почитать?
Вересень 1, 2008 в 2:06
Спасибо. Добавлено в закладки
Вересень 2, 2008 в 21:15
Это же вас я нашёл вконтакте - http://vkontakte.ru/profile.php?id=?14613688 ?
Вересень 3, 2008 в 11:42
Очень было интересно читать, спасибо!
Вересень 3, 2008 в 14:35
спасибо
Вересень 5, 2008 в 13:21
спасибо
Вересень 6, 2008 в 0:10
Фигня все это, если концептуально посмотреть и рассудить.
Вересень 7, 2008 в 2:49
Огромное человеческое спасибочки !