пятница, сентября 28, 2007

Имитатция trace во Adobe Flex

Последнее время появилось несколько полезных утилит, позволяющих потрейсить ваши приложения не прибегая к debug-режиму компиляции. Например, один от Алексея Аникутина и другой от ShaggySmile.
Первый тип неудобен для меня, так как он сделан для Mozilla Firefox, а я привык запускать приложения в осле. А второй подразумевает сперва запуск флешки-приемщика сообщений. И еще - мне не нужны всякие навороты типа табличных данных - мне просто нужен вывод текстовых сообщений, ну там массив протрейсить или строчку какую-нибудь вывести. Без обид, ребят:)

Поэтому, я для себя сделал маленький наворот для html-темплейта приложения. Открываем темплейт, добавляем следующий код сразу после body:

<!--logger-->
<input type="button" onclick="toogleVis()" value="show/hide"/>
<input type="button" onclick="clearLog()" value="clear"/>
<div id="log" style="display:block;">
<script language="JavaScript" type="text/javascript">

function setLog(val)
{
var objDiv = document.getElementById("txt_log");
objDiv.scrollTop = objDiv.scrollHeight;
objDiv.value +=val + "\n";
}

function toogleVis()
{
var objDiv = document.getElementById("log");
objDiv.style.display=(objDiv.style.display=="block")?"none":"block";

}

function clearLog()
{
document.getElementById("txt_log").value="";
}

</script>
<textarea style="width:100%; height:150px;" id="txt_log"></textarea>
</div>
<!--logger-->

На body вешаем обработчик onload="clearLog()".

Теперь в нашем флекс-проекте добавим маленькую функцию:

public function strace(val:*):void
{
var str:String = val.toString();
ExternalInterface.call("setLog", str);
}

Теперь после компиляции проекта и открытии его в браузере, наверху появляется текстовое поле, в которое можно выводить свои трейсы:

strace("Hello world :)");

6 комментариев:

Unknown комментирует...

А чем не устраивает обычный трейсер, коих великое множество? Как раз то что надо, что б строчку протрейсить. И не приходится ничего менять в темплейтах.
Например, http://code.google.com/p/flash-tracer/downloads/list

(извиняюсь за грязный пиар : ))

Анонимный комментирует...

Kроме того можно использовать любые логгеры "без слова флэш в названии" вроде BrineSoft Log Viewer или Kiwi Log Viewer(free).
Приимущество такого метода в том, что в коде можно пользоваться стандартным трейсом, и оутпут будет виден из любого браузера или swf-файла.

Если вы преверженец FF то можно пользоваться плагином Flash Tracer, копией которого оснащён и FlashDevelop

shaggysmile комментирует...

ну будет и life версия :)

Анонимный комментирует...

А знаете ли вы что, если вам когда-нибудь захочется заглушить какой-либо мобильный телефон или другое средство связи, то воспользуйтесь для этого Блокираторы мобильных.

Анонимный комментирует...

Кстати, если вам однажды понадобится заглушить чей-нибудь сотовый телефон или другое средство связи, то попробуйте воспользоваться для этого Блокираторы 3G.

Анонимный комментирует...

У вас RSS в извилистый кодировке!