Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Debuging SWF (http://www.flasher.ru/forum/showthread.php?t=77556)

Leezard 27.03.2006 20:22

Debuging SWF
 
Каким образом можно отдебагить мувик. Интересует список переменных и объектов.
Пробовал X-ray от http://labs.blitzagency.com - не работает, немогу понять почему

Пробовал LuminicBox от http://www.luminicbox.com в отличии от предыдущего работает но очень нестабильно. Методом тыка выяснил что неработает пр наличии определенного поля ввода, у бираешь, работает, но затем опять отказывается, в общем реальной пользы мало.

Вроде как-то можно вывести данные при помощи плеера, но системы этой я не понял. Если кто знает, подскажите как.

nouba 27.03.2006 22:24

Если я тебя правильно понял то тебе поможеттакая вот фигня
http://www.blazepdf.com/downloads/afterthought_v2_1.zip

Vensky_Hor 28.03.2006 00:27

Я знаю, что есть такая программа, которая ловит трейсы (если ты в коде делал trace). У меня лично её нет, но знаю, что называется она Flash7 Trace Viewer.
Можешь поискать в инете.
Я же обычно делаю getURL ("javascript:alert('"+variableToShow+"');");
;)

son_of_war 28.03.2006 06:32

ну в принципе можно и средствами флэш debug делать - в свой мувик прогружаешь отлаживаемый и выводишь List Variables, List Objects - все объекты и переменные подгруженного мувика увидишь...
или программно выводи нужные значения

Leezard 28.03.2006 13:05

а как внутри мувика получить List Variables, List Objects?

__i 28.03.2006 13:24

есть такой цикл модный называеться for in

я се для работы написал маленькую функцию - выводит инфу об объекте и вложеных внего
Код:

Object.prototype.toStr = function(del) {
                        var s:String;
                        s = '';
                        if (del == undefined) {
                                del = '';
                                s += '*****************\n';
                        }
                        for (var i in this) {
                                if (typeof (this[i]) == 'object') {
                                        s += ''+del+' ['+i+' '+typeof (this[i])+']:\n'+this[i].toStr(del+'  ')+del+' [/'+i+']\n';
                                } else {
                                        s += del+' ['+i+']=>'+this[i]+'\n';
                                }
                        }
                        return s;
                };
_global.ASSetPropFlags(Object.prototype, ['toStr'], 7);  //чтобы она сама не отобразалась в коде

использовать - trace(my_obj.toStr());
как вариант - делаешь текстовое поле и в нем выводишь все
типа
_root.debug.text+=my_obj.toStr()+'\n';
ну и еще можно сделать чтоб оно всегда было поверх всех мувиков.

единственный недостаток этой функции если мувики содержат ссылки друг на друга. т.е. my_mama.papa = my_papa, my_papa.mama = my_mama, тогда функция умерает в рекурсивных муках, ну или останавливаеться после 256 раз с матами от плеера.

Leezard 28.03.2006 13:30

Похоже то что надо. Мегасенкс !!!

Leezard 28.03.2006 18:52

Действительно то что надо, еще раз спасибо, а что касается рекурсий, я закомментировал строчку рекурсивного вызова внутри функции, когда знаешь структуру проекта этого в принципе достаточно. То есть получаем список объектов на одном уровне.

nouba 30.03.2006 21:37

Вложений: 1
Вспомнил я о своей панельке дебаговой, и подумал что может оно поможет
Немножко дописал инструкцию в классе (думаю более-менее понятно)

Если какие вопросы пишите :drinks:

Leezard 31.03.2006 13:58

э-э-э Чето не работает. Ты не мог бы пример привести использования своей панельки. И готовый проект тестовый тоже неплохо было бы.

nouba 31.03.2006 14:38

Что именно не работает ?

1. Ты её не видиш?
2. Она не показывает ничего?
3. Ты недочитал инструкцию и не правильно вызвал её или не там ?

Поточнее пожалуйста.....

Leezard 31.03.2006 14:40

1. она не вызывается
2. соотвественно я ее не вижу :)

Приведи пример вставки панели в мувик.

nouba 31.03.2006 14:45

В руте пише допустим такое
Код:

import DebugPanel.as;
var t = new DebugPanel(0xFF0000);

Компилишь мувик и теперь всё что тебе надо это нажать "Shift+D" чтобы она появилась, и потом еще раз "Shift+D" чтобы её спрятать

А ты ваше инструкцию в дескрипшине к классу читал ? :confused:

Leezard 31.03.2006 15:12

Читал правда с трудом. Она типа в уникоде. :)
О все заработало, ошибся в импорте класса.
Есть одно, но я на основе функции __i пытался побыстрому сделать нечто подобное твоей панели, правда в графическом виде, но столкнулся с проблемой дальше второго уровня вложенности информация не приходит.
Если твой класс вставить в мувик где на руте лежит мувик A в нем находится мувик Б , а внутри мувика Б находится мувик В то спомощью твоей панели можно добраться только до информации о Б.
Если в коде написать _root.a.b.c.toStr(), где toStr() функция выода параметров дебага - все работает. Но если задать в ввиде _root["a.b.c"].toStr - понятно что ничего не выйдет. А путь задается именно в таком строковом виде.
О! Хотя как вариант можно искать в строке точки и преобразовывать в вид _root.["a"]["b"]["c"] :) Что скажете?

nouba 31.03.2006 15:59

_root.["a"]["b"]["c"] - это неправильный синтаксис! :)
Компилер тебе сразу скажет фак офф. Если уж так то _root["a"]["b"]["c"]

Leezard 31.03.2006 16:01

:) согласен, но суть понятна? То есть твоя панель не залазит в глубину дальше второго уровня. Все верно?

nouba 31.03.2006 16:34

Вложений: 1
Согласен! :)
Но теперь я поправил и оно проникает на любой уровень :)

З.Ы. Спасибо за замечание

Leezard 31.03.2006 16:55

УРА! Работает! Рукоплескаю (хлопаю в ладоши ) :)
Ну осталось графический интерфейс приделать :)

Офф - хочу игрушку твою посмотреть, нвыходит.

nouba 31.03.2006 17:26

какую игрушку ? :confused:

Leezard 04.05.2006 16:24

Графический интерфейс приделали, nouba написал много полезных фич , фильтр например. В общем получился такой очень неплохой девайс.


Часовой пояс GMT +4, время: 02:58.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.