Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=7)
-   -   гадкое текстовое поле! (http://www.flasher.ru/forum/showthread.php?t=34004)

John Connor 04.07.2002 22:18

гадкое текстовое поле!
 
вот код:
Код:

for(j=0 ; j<_root.catalog[section].length ; j++){
                if(_root.catalog[section][j].quantity==0){
                        continue;
                }
                name = "but" add i add "_" add j;
                search_result.createEmptyMovieClip(name,i*2000+j+20);
                obj = search_result[name];
                obj._x = 1;
                obj._y = k*17 + cur_y;
                obj.createRect(0,0,330,16,0x000000,0);
                obj.n = j;
                obj.section = section;

                // вот создается инпут-поле
                obj.createTextField("quan",i*2000+j+1620,331,-1,30,16);
                obj["quan"].type = "input";
                obj["quan"].restrict = "0-9";
                obj["quan"].text = _root.catalog[section][j].quantity;
                obj["quan"].setTextFormat(_root.formCatalogListi);
                obj["quan"].embedFonts = true;

                obj["quan"].onSetFocus = function(){
                        tf = this.getTextFormat();
                        tf.align = "left";
                        this.setTextFormat(tf);
                }
                obj["quan"].onKillFocus = function(){
                        tf = this.getTextFormat();
                        tf.align = "right";
                        this.setTextFormat(tf);
                        _root.catalog[this._parent['section']][this._parent['n']].quantity = this.text;
                }

                k++;
        }

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

что делать?

УильямБрэдберри 04.07.2002 22:23

а вобще на чем тестишь?
ембед убирал?

jeezekil 05.07.2002 14:41

Не рабтает он без ембеда.
этот слой обязательно должен быть под маской и без ембеда там просто ничего не отображается.

Nox Noctis 05.07.2002 15:56

привет Глук :)
помнишь была такая тема где чел спросил как мышкой нарисовать поле инпутное с ембедным шрифтом ?
я там в конце запостил код... и еще тогда заметил этот глюк: если не поставить курсор куда-нить внутрь строки, то с конца строки ничего нельза ввести :( но тогда мне было лениво разбираться как это исправить...
Код:

tst = "Jackdaws love my big sphynx of quartz...";
TFrefine = function (s, e) {
        tellTarget (this) {
                createTextField("TF", 1, s.x, s.y, e.x-s.x, e.y-s.y);
                TF.type = "input";
                TF.multiline = this.TF.wordWrap=this.TF.border=true;
                TF.variable = "_root.tst";
                // TF.text = "Jackdaws love my big sphynx of quartz...";
                // ---
                TFformat = TF.getTextFormat();
                TFformat.font = "FNT";
                TF.setTextFormat(TFformat);
                TF.embedFonts = true;
                // ---
        }
};
_root.onMouseDown = function() {
        this.createEmptyMovieClip("core", 1);
        core.strt = {x:_root._xmouse, y:_root._ymouse};
        core.onMouseMove = function() {
                var tmp = {x:_root._xmouse, y:_root._ymouse};
                var st = {x:Math.min(tmp.x, this.strt.x), y:Math.min(tmp.y, this.strt.y)};
                var en = {x:Math.max(tmp.x, this.strt.x), y:Math.max(tmp.y, this.strt.y)};
                TFrefine.apply(this, [st, en]);
        };
};
_root.onMouseUp = function() {
        delete core.onMouseMove;
        delete _root.onMouseDown;
        // ---------------------------------
        // вот так мы победили сырость :)
        Selection.setFocus("tst");
        Selection.setSelection(tst.length, tst.length-1);
        Selection.setSelection(tst.length, tst.length);
        // ---------------------------------
        delete _root.onMouseUp;
};

копипастим -> в библиотеку любой шрифт -> ему линкейдж "FNT" -> запускаем, мышкой рисуем поле...

в функции _root.onMouseUp решение проблемы :) простое как три рубля :)

jeezekil 05.07.2002 17:36

Привет, Ноктис!
на самом деле это у меня трабла, а не у Глюка :)
но твой трехрублевый метод все спас :)

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

Nox Noctis 05.07.2002 17:44

хм... не видел такого... :rolleyes:
именно при потере фокуса ?
или при перемещении фокуса на какой-то другой объект ?

в принципе можно тем же способом похитрить (с помощью установки\снятия фокуса подряд)...
только надо понять в каких-таких случаях это происходит... чтобы зря не гонять курсор туда-сюда...

Смольный (Smolniy) 05.07.2002 17:47

А если попробовать экстренно перерисовать кадр updateAfterEvent?

Nox Noctis 05.07.2002 17:54

дык надо знать на какой эвент апдейтить :)

мм... ну, можно в приципе на онКиллФокус... только у меня, например, вообще не получилось добиться застывания курсора, так что проверить это не получится :) может это вообще системный глючок...


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

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