Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   FDT+Eclipse, MTASC -trace <function> не работает (http://www.flasher.ru/forum/showthread.php?t=81735)

nouba 26.06.2006 18:00

FDT+Eclipse, MTASC -trace <function> не работает
 
Есть такой вот клас
Код:

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);
                }
        }
}

Хочу заставить МТАСК скомпилить мою свф-ку так чтобі запускалась моя функция myTrace() вместо обычного трейса
пишу все "как книга пишет" -trace TRACE.myTrace но нифика оно не работает

Версия MTASC - 1.12 :o

Бармалей 27.06.2006 11:49

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-код отвечает за вставку ссылки, а кнопки для форматирования текста в Расширенном режиме не работают почему-то.

etc 27.06.2006 13:21

4) Научись правильно и по стандарту писать классы.

nouba 27.06.2006 16:03

Статью читал :) ...
Если у тебя есть кряк ;)))) то это даже очень ОпенСурс :)

Теперь о проблеме поточнее...

Есть Main class, там есть main entry point

Код:

import TRACE;
public static function main(){
ну тут всё нужное мне
}

а в аргументах к МТАСК-у пишу

-trace TRACE.myTrace

потом trace('hello!","inf");

но нифика оно не пашет, а вот если делать
Код:

import TRACE;
public static function main():Void{
_root.TRACE = new TRACE();
_root.TRACE.myTrace("привет","inf");
}
то всё работает ... ну это и понятно что работает

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

nouba 27.06.2006 16:09

Всё ))) всем спасибо сам разобрался
"очепятки - это зло" :)

А вот про классы всеравно послушаю и почитаю...

etc 27.06.2006 16:21

1) Только первая буква имени класса -- прописная
2) Все классы являются наследниками Object
3) _root не принято использовать в классах. Если _root используется в классе -- это ошибка проектирования
4) Названия переменных не несут смысловой нагрузки (например t, id, tr, ini, iam, o)
5) После точки с запятой должен быть перевод строки (конструкций if () {} это тоже касается)
6) Зачем создавать экземпляр класса, если все его методы и переменные -- статические?
Можно ещё долго и долго перечислять...

nouba 27.06.2006 16:59

1) Согласен!
2) Почему? А если я "росшыраю" свои же классы? Допустим чтобы использовать тот же метод __drawRec (как в примере класса), или я что-то не понимаю в ООП %)
3) Согласен!
4) Почему не несут с переменными id, ini, iam - кажеться все понятно, t и o - да, не несут, но они исполняют чисто служебные внутринние функции, их не нада запоминать.
5) Это уже стилистика написания, думаю спорить на эту тему бессмысленно
6) Согласен! Загнался :)

etc 27.06.2006 17:32

2) Не нужно расширять Object, твой класс и так наследник Object. Запись "extends Object" не имеет смысла. И метода __drawRec нет в Object.
4) Тебе -- может и не нужно, но человеку, которому потребуется разобраться в твоём классе (пример -- эта тема), будет крайне сложно понять, что ты подразумевал под этими переменными. Мне, например, всё-равно неясно с первого взгляда и ковыряний в коде, что такое id, ini, iam.
5) До тех пор, пока ты работаешь один. Лучше использовать хоть какой-нибудь стандарт, чем не использовать его вообще и писать в стиле AS1 по десятку конструкций на одной строке. Ты не только другим, но и себе роешь яму -- через пару месяцев разобрать код будет сложно, потому что написан сплошной строкой.
7) У тебя нигде не определено, что такое Index
8) Путаница в названиях методов -- некоторые начинаются с двойного подчёркивания (такое название может использоваться в приватных методах, но не публичных точно), а другие со строчной буквы.
9) Отсутствие типизации в некоторых местах.
10) Т.к. класс статический, то конструктор в нём не вызывается, соответственно всё, что внутри конструктора, тоже не работает.
11) В статическом классе не может быть ссылки на this, и конструкцию
Код:

iam.ini=$ME;
надо заменить на
Код:

iam.ini=TRACE;
в данном случае. Но опять же -- не имеет смысла вообще так писать, т.к. TRACE и так является глобальным объектом и ссылка на конструктор не нужна.

В общем лучше всё начисто переписать.

nouba 27.06.2006 17:51

2) Это все этот ассист проклятый :quiet:
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;
                        }
                }
        }
}

Это именно тот Индекс класс

Забыл написать что в Трейс класс вверху написано
Код:

import Index;
8) Признаю... пока не так много классиков написано надо поправить
9) Там где переменная являеться следствием ретурна стандартной функции то я не пишу тип.... и так понятно :)
10) Спасиба... всегда блин путаюсь с этими статиками и т.д. С ООП только начинаю работать, потому советы слушаю :confused:
11) понял понял....

Ну переписывать не надо.... надо усовершенствовать и поправлять

Бармалей 27.06.2006 18:06

9) Типизация переменных нужна не только для того, чтобы программисту был более понятен код класса. Именно на основе типизированных переменных и свойств компилятор проверяет правильность написания кода класса, и может своевременно сообщить тебе о найденных ошибках несоответствий типов данных.


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

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