![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Есть такой вот клас
class TRACE extends Object{
private static var ini:TRACE = new TRACE();
private static var indexx:Number;
private static var iam:Object;
private static var t_text:Object;
private static var tr:Object;
private static var myText:String;
private static var prev:String;
private static var $ME:Object;
// ------------ TRACER ---------------------
public static function killTrace():Void{
var f=_root.myTrace;
f.clear();f.te.removTextField();f.trace1.removTextField();f.removeMovieClip();
}
public static function killText():Void{
indexx=0;
myText=prev="";
}
public function TRACE(){
prev="";indexx=0;$ME=this;
}
public static function myTrace(t:String, id:String):Void{
if(t!=""){
if(prev!=id && id=="inf"){t="</FONT><FONT color='#889988'>"+t;prev=id;}
if(prev!=id && id=="err"){t="</FONT><FONT color='#FF1111'>"+t;prev=id;}
text(t);
}
}
private static function border(o:Object):Void{
Index.__drawRec(o,0,0,300,o._height+10,0x000000,100,0x225599,100,2);
Index.__drawRec(o,3,3,295,18,0x225599,100,0x000000,0,0);
Index.alignTo({fi:"_root",se:o,x:"center",y:"center"});
Index.alignTo({fi:iam,se:tr,x:"center",y:""});
}
public static function text(texti:String):Void{
if(texti!=""){
if(prev==""){myText="<FONT>";}
myText+=texti+"<br>";
killTrace();
iam = _root.createEmptyMovieClip("myTrace",_root.getNextHighestDepth());
tr = iam.createTextField("trace1",iam.getNextHighestDepth(),4,2,200,200);
tr.textColor=0xFFFFFF;tr.autoSize=true;tr.selectable=false;tr.text="trace";
t_text = iam.createTextField("te",iam.getNextHighestDepth(),10,23,296,20);
iam.ini=$ME;iam.onRelease=function(){_root.TRACE.killText();};iam.useHandCursor=false;
t_text.multiline=t_text.autoSize=t_text.html=true;
t_text.htmlText=myText;
border(iam);
}
}
}
пишу все "как книга пишет" -trace TRACE.myTrace но нифика оно не работает Версия MTASC - 1.12 ![]()
__________________
noubase.com |
|
|||||
|
1) Подпись "FDT + ECLIPSE + MTASC = OpenSource" - неверна. Плату за FDT никто еще не отменял.
2) Опиши подробней проблему. Где пишешь, как запускаешь компиляцию. 3) У Constantiner-a есть [link=http://constantiner.blogspot.com/2006/02/flash-apache-ant-new-media.html]хорошая статья про использование Eclipse, FDT, MTASC и Apache Ant[/link]. Почитай, может поможет. =) P.S. Забыл какой BB-код отвечает за вставку ссылки, а кнопки для форматирования текста в Расширенном режиме не работают почему-то. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
4) Научись правильно и по стандарту писать классы.
|
|
|||||
|
Статью читал
... Если у тебя есть кряк ))) то это даже очень ОпенСурс ![]() Теперь о проблеме поточнее... Есть Main class, там есть main entry point а в аргументах к МТАСК-у пишу -trace TRACE.myTrace потом trace('hello!","inf"); но нифика оно не пашет, а вот если делать import TRACE;
public static function main():Void{
_root.TRACE = new TRACE();
_root.TRACE.myTrace("привет","inf");
}
то всё работает ... ну это и понятно что работает
Любезно выслушаю пожелания ))) или зайду по указаной ссылке на хорошую статью, где я пойму чем мой класс не отвичает стандартам и почему он не правильный
__________________
noubase.com |
|
|||||
|
Всё ))) всем спасибо сам разобрался
"очепятки - это зло" ![]() А вот про классы всеравно послушаю и почитаю...
__________________
noubase.com |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
1) Только первая буква имени класса -- прописная
2) Все классы являются наследниками Object 3) _root не принято использовать в классах. Если _root используется в классе -- это ошибка проектирования 4) Названия переменных не несут смысловой нагрузки (например t, id, tr, ini, iam, o) 5) После точки с запятой должен быть перевод строки (конструкций if () {} это тоже касается) 6) Зачем создавать экземпляр класса, если все его методы и переменные -- статические? Можно ещё долго и долго перечислять... |
|
|||||
|
1) Согласен!
2) Почему? А если я "росшыраю" свои же классы? Допустим чтобы использовать тот же метод __drawRec (как в примере класса), или я что-то не понимаю в ООП %) 3) Согласен! 4) Почему не несут с переменными id, ini, iam - кажеться все понятно, t и o - да, не несут, но они исполняют чисто служебные внутринние функции, их не нада запоминать. 5) Это уже стилистика написания, думаю спорить на эту тему бессмысленно 6) Согласен! Загнался ![]()
__________________
noubase.com |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
2) Не нужно расширять Object, твой класс и так наследник Object. Запись "extends Object" не имеет смысла. И метода __drawRec нет в Object.
4) Тебе -- может и не нужно, но человеку, которому потребуется разобраться в твоём классе (пример -- эта тема), будет крайне сложно понять, что ты подразумевал под этими переменными. Мне, например, всё-равно неясно с первого взгляда и ковыряний в коде, что такое id, ini, iam. 5) До тех пор, пока ты работаешь один. Лучше использовать хоть какой-нибудь стандарт, чем не использовать его вообще и писать в стиле AS1 по десятку конструкций на одной строке. Ты не только другим, но и себе роешь яму -- через пару месяцев разобрать код будет сложно, потому что написан сплошной строкой. 7) У тебя нигде не определено, что такое Index 8) Путаница в названиях методов -- некоторые начинаются с двойного подчёркивания (такое название может использоваться в приватных методах, но не публичных точно), а другие со строчной буквы. 9) Отсутствие типизации в некоторых местах. 10) Т.к. класс статический, то конструктор в нём не вызывается, соответственно всё, что внутри конструктора, тоже не работает. 11) В статическом классе не может быть ссылки на this, и конструкцию надо заменить на в данном случае. Но опять же -- не имеет смысла вообще так писать, т.к. TRACE и так является глобальным объектом и ссылка на конструктор не нужна. В общем лучше всё начисто переписать. Последний раз редактировалось etc; 27.06.2006 в 17:35. |
|
|||||
|
2) Это все этот ассист проклятый
![]() 4) - 5) Ну могу согласиться... скоро у нас появиться ещё один кодер АС - надо будет написать ему пару коментов и отформатировать еод 7) class Index extends Object {
// Вари для менюшок і баттонів ... стилі і т.д.
private static var btnStyle:Object = {boC:0x666666, bgC:0x444444, roll_bgC:0x666666 };
private static var menuTextStyle:TextFormat = new TextFormat();
///////////////////////////////////////////////////////////////
public function Index() {
}
// -----------------------
// DEBUGING
public function debugERR(title:String, mess:String){
}
// -----------------------
// -----------------------
// TEXT ///
public static function makeTextFormat(bold:Boolean, he:Number, cvet:Number, font:String):Void{
var g = menuTextStyle;g.bold = bold;g.size = he;g.color = cvet;g.font = font;
}
// -----------------------
// ----------------------------------------
// DRAWING FUNCTIONS //
public static function __drawRec(o:Object, xx:Number, yy:Number, wi:Number, he:Number, bg_color:Number, bg_alpha:Number, st_color:Number, st_alpha:Number,line_w:Number):Void {
o.beginFill(bg_color, bg_alpha);o.lineStyle(line_w, st_color, st_alpha);o.moveTo(xx, yy);o.lineTo(xx+wi, yy);o.lineTo(xx+wi, yy+he);o.lineTo(xx, yy+he);o.lineTo(xx, yy);o.endFill();
};
public static function __drawTri(o:Object,x1:Number, y1:Number,x2:Number, y2:Number,x3:Number, y3:Number,bg_color:Number, bg_alpha:Number, st_color:Number, st_alpha:Number,line_w:Number):Void{
o.beginFill(bg_color,bg_alpha);o.lineStyle(line_w,st_color,st_alpha);o.moveTo(x1,y1);o.lineTo(x2,y2);o.lineTo(x3,y3);o.lineTo(x1,y1);o.endFill();
}
// ----------------------------------------
// ----------------------------------------
// ------------- MENUS & BUTTONS ----------
public static function changeBtnStyle(style:Object):Void{
if(style.boC!=undefined){
btnStyle = style;
_global.StyleBroadcaster.broadcastMessage("onChangeStyle");
}
}
public static function makeDefTextField(o:Object, text:String):TextField{
var tt = o.createTextField("def_text", o.getNextHighestDepth(),0,4,10,18);
tt.autoSize=true;tt.selectable=false;tt.text=text;
tt.setTextFormat(0,tt.length,menuTextStyle);
return tt;
}
public static function setColor(o:Object, $c:String, $a:Number):Void{
o.cc = new Color(o);
o.cc.setRGB($c);
if(typeof($a)=="number"){o._alpha=$a;}
};
// ------------ COORDINATES -----------------
public static function my_localToGlobal(o:Object):Object{
var g = {x:0,y:0};o.localToGlobal(g);return g;
}
public static function my_globalToLocal(coo:Object, o:Object):Object{
o.globalToLocal(coo);
return coo;
}
// -----------------------------------------
// ------------- ALIGN ----------------------
public static function alignTo(align:Object):Void{
if(align.fi!=undefined && align.se!=undefined){
//_root.TRACE.inf(align.fi);
if(align.fi=="_root"){align.wid = Stage.width;align.hei = Stage.height;
}else{align.wid = align.fi._width;align.hei = align.fi._height;
};
switch(align.x){
case "right": // рівняє другий об"ект до першого по іксу по правому краю
align.se._x = (my_globalToLocal({x:(my_localToGlobal(align.fi)).x+(align.wid-align.se._width), y:0}, align.se._parent)).x;
break;
case "left": // по лівому краю
align.se._x = (my_globalToLocal({x:(my_localToGlobal(align.fi)).x, y:0}, align.se._parent)).x;
break;
case "center": // по центру
align.se._x = (my_globalToLocal({x:((my_localToGlobal(align.fi)).x+((align.wid-align.se._width)/2)),y:0}, align.se._parent)).x;
break;
default:
align.se._x = align.se._x;
}
switch(align.y){
case "bottom": // рівняє другий об"ект до першого по ігрику по нижньому краю
align.se._y = my_globalToLocal((my_localToGlobal(align.fi)).y+align.hei-align.se._height, align.se._parent);
break;
case "top": // по верхньому краю
align.se._y = (my_globalToLocal(my_localToGlobal(align.fi), align.se._parent)).y;
break;
case "center": // по центру
align.se._y = my_globalToLocal((my_localToGlobal(align.fi)).y+((align.hei-align.se._height)/2), align.se._parent);
break;
default:
align.se._y = align.se._y;
}
}
}
}
Забыл написать что в Трейс класс вверху написано 8) Признаю... пока не так много классиков написано надо поправить 9) Там где переменная являеться следствием ретурна стандартной функции то я не пишу тип.... и так понятно ![]() 10) Спасиба... всегда блин путаюсь с этими статиками и т.д. С ООП только начинаю работать, потому советы слушаю ![]() 11) понял понял.... Ну переписывать не надо.... надо усовершенствовать и поправлять
__________________
noubase.com |
|
|||||
|
9) Типизация переменных нужна не только для того, чтобы программисту был более понятен код класса. Именно на основе типизированных переменных и свойств компилятор проверяет правильность написания кода класса, и может своевременно сообщить тебе о найденных ошибках несоответствий типов данных.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|