PDA

Просмотр полной версии : отладка при написании классов


ffffff
02.09.2005, 21:24
Здр.

Вот сижу, пытаюсь придумать свой первый класс :)
и столкнулся с проблемой отладки. Как я понял при написании классов trace не действует! как быть?

KidsKilla
02.09.2005, 22:03
действует трейс.
на, вот мой дебаггер =)

class com.kidskilla.Debug{
private static var __oa:Array;
public function Debug(){
return;
}
public static function getWholeObj(obj):String{
if(typeof obj != "object") return obj.toString()+" ("+typeof obj+")";
Debug.__oa = new Array();
Object.prototype._toString = function () {
if(typeof this == "function") return ""
Debug.__oa[Debug.__oa.length] = this;
var s = ""+typeof this+": {\n";
var ti = ""
for (var i in this) {
var c = (typeof this[i] == "object");
var type = c ? "" : " ("+typeof this[i]+")";
if(c){
var w
for(var j in Debug.__oa){
if(this[i] == Debug.__oa[j]){
w = true
ti = "(parent Object: "+j+" from top)"
};
}
if(!w) ti = this[i]._toString().split("\n").join("\n\t");
} else {
ti = this[i];
}
s += "\t["+i+"] = "+ti+type+" "+"\n";
}
s += "};";
return s;
}
Array.prototype._toString = Object.prototype._toString
_global.ASSetPropFlags(Array.prototype, "_toString", 1);
_global.ASSetPropFlags(Object.prototype, "_toString", 1);
var txt = obj._toString();
delete Array.prototype._toString;
delete Object.prototype._toString;
return txt;
}
public static function watch(obj:Object, prop:String, browser:Boolean):Void{
obj.watch(prop, function(prop, wuz, now, obj){
var func = browser ? Debug.browser : trace;
trace("\n"+prop+":\n\twas="+wuz+";\n\tnow="+now+";\n");
});
}
public static function trace(mess):Void{
trace(getWholeObj(mess))
}
public static function browser(mess):Void{
mess = Debug.getWholeObj(mess)
mess = mess.split("\n").join("\n<br>").split("\t").join("\t&nbsp;&nbsp;&nbsp;").split(";[").join("<b>").split("] =").join("</b> =");;
var t = "javascript:w=window.open('', 'trace', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbar=0, Resizable=1, Copyhistory=0, Width=200, Height=200');";
t+="w.document.writeln(\"<html><head><title>Flash trace</title></head><body bgcolor='#FFFFFF' color='#000000'>"+mess+"<br></body></html>\");";
getURL(t);
}
public static function toString():String{
return "[Debug v1.0]";
}
}

usage:
import com.kidskilla.Debug;
Debug.browse(text, variable or smt) // открывает трейс в браузере
Debug.trace(text, variable or smt) // "трейс+" =) потрейсь объекты, переменные поймёшь отличия =)
Debug.watch(obj:Object, prop:String, browser:Boolean) // слежка за переменной, 3й параметр -- в браузере или трейсом

iNils
02.09.2005, 22:15
в mx была такая панель ANSWERS, там всякая муть была.
но муть была в флешке. понимаете? туда можно свою флешку положить. и через sharedobject в нее что угодно можно запихнуть. и окно в которое через sharedobject можно данные типа отладки выводить, сделать так чтобы каждый запуск записывал данные в следующию ячейку массива и тогда в отличии от окна output их можно было сравнивать. но в mx2004 эту панель убили :(

ffffff
03.09.2005, 07:54
хватит ненавадеть mx 2004 ! от прогресса не уйдёшь! :)))

ffffff
03.09.2005, 07:56
а по поводу недоступности trace меня проглючило...

он у меня не пахал когда я его написал в раздел присваивания начальных зеченмий переменных, сразу после объявления класса...

только не понятно почаму он в сеттере на работает...

а так вообще везде пашет....

iNils
03.09.2005, 14:36
хватит ненавадеть mx 2004 ! от прогресса не уйдёшь! :)))
Я его не ненавижу. Я считаю что он не удобен.

От прогресса я не ухожу, флеш пережил 4, 5, mx
фотошоп 4, 5, 5.5, 6, 7, CS. Так что как видишь новые продукты я использовал. Но скажем в кореле была 5, 7, потом сразу 10, 12. Не все версии просто бывают удачными.

Вот вышел PhotoshopCS2 не давно, а уже читал что собираются выпустить PhotoshopCS3, так как многие не довольны его томрознутосью и работой с памятью.