Форум 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)
-   -   Не отображается TextField при создании в подклипе (http://www.flasher.ru/forum/showthread.php?t=113056)

MarVal 17.06.2008 16:39

Не отображается TextField при создании в подклипе
 
Суть проблемы изложена в теме - создаю несколько мувиков, в них загружаю картинку и текст подписи к ней. При наведении мыши на ролике, добавляется фильтр. В остальное время текст подписи не виден. А когда фильтр применяется, то все ок. В чем может быть проблема?

Код:

onClipEvent(load) {
        mcThis = this;
        mcThis._dx = 0;
        mcThis._stopOnImg = false;
        mcThis._lastLeft = 0;

        if(_root.propNum == null) _root.propNum = 5;
        mcThis.propositions = new Array(_root.propNum);

        for(i=0; i< _root.propNum; i++) {
                if(_root["prop_img"+String(i)] != null and _root["prop_annot"+String(i)] != null and _root["prop_header"+String(i)] != null and _root["prop_link"+String(i)] != null and _root["prop_width"+String(i)] != null) {
                        mcThis.propositions[i] = new Array(i, _root["prop_img" + String(i)], _root["prop_header" + String(i)], _root["prop_annot" + String(i)], _root["prop_link" + String(i)], int(_root["prop_width" + String(i)]));

                        var mc_prop:MovieClip = mcThis.createEmptyMovieClip("prop" + String(i), mcThis.getNextHighestDepth());
                        mc_prop._x = mcThis._lastLeft;
                        mcThis._lastLeft += mcThis.propositions[i][5] + 10;
                        mc_prop._num = i;
                        mc_prop._link = mcThis.propositions[i][4];
                        mc_prop.createEmptyMovieClip("image", mc_prop.getNextHighestDepth());
                        mc_prop.image.loadMovie(mcThis.propositions[i][1]);
                        var tf1:TextField = mc_prop.createTextField("tf", mc_prop.getNextHighestDepth(), 1, 124, mcThis.propositions[i][5], 40);
                        tf1.text = mcThis.propositions[i][2];
                        tf1.multiline = false;
                        tf1.textColor = 0x34717E;
                        var my_fmt:TextFormat = new TextFormat();
                        my_fmt.color = 0x34717E;
                        my_fmt.align = "center";
                        my_fmt.font = "Myriad Pro, Arial";
                        my_fmt.kerning = true;
                        my_fmt.size = 14;
                        my_fmt.leading = -2;
                        tf1.setTextFormat(my_fmt);
                       
                        var tf2:TextField = mc_prop.createTextField("tf2", mc_prop.getNextHighestDepth(), 1, 136, mcThis.propositions[i][5], 40);
                        tf2.multiline = true;
                        tf2.wordWrap = true;
                        tf2.html = true;
                        var my_fmt2:TextFormat = new TextFormat();
                        my_fmt2.color = 0xFFFFFF;
                        my_fmt2.align = "center";
                        my_fmt2.font = "Myriad Pro, Arial";
                        my_fmt2.kerning = true;
                        my_fmt2.size = 14;
                        my_fmt2.leading = -2;
                        tf2.htmlText = mcThis.propositions[i][3];
                        tf2.setTextFormat(my_fmt2);


                        mc_prop.onMouseUp = function() {
                                if(this._xmouse > 0 and this._xmouse < this._width and this._ymouse > 0 and this._ymouse < this._height) {
                                        getURL(this._link);
                                }
                        }

                        mc_prop.onRollOver = function() {
                                _root.mc_props._dx = 0;

                                var myDropFilter = new flash.filters.GlowFilter(0x85BFCE, 10, 3, 3, 5, 50, false, false);
                                var myFilters:Array = this.filters;
                                myFilters[0] = myDropFilter;
                                this.filters = myFilters;                               
                        }
                       
                        mc_prop.onRollOut = function() {
                                this.filters = new Array();
                        }
                }
        }
}


chingachgoog 17.06.2008 17:12

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

MarVal 17.06.2008 19:03

Шрифт Myriad Pro использую, как это в коде и написано. Я не совсем понял вопроса - что значить "тот ли"?
Попробовал внедрить шрифт, но почему-то русские символы не отображаются.

chingachgoog 17.06.2008 19:24

my_fmt2.font = "Myriad Pro, Arial"; - это не внедрение шрифтов.
Внедрение шрифтов происходит в два этапа:
1) помещаем динамическое текстовое поле с включенным внедрением на таймлайн (тоже выйдет при экспорте библиотечного символа содержащего такое текстовое поле в первый фрейм)
2) В уже нужном нам динамическом текстовом поле прописываем embedFonts=true
В вашем случае
Код:

tf1.embedFonts=true

MarVal 17.06.2008 19:29

Я понимаю, что та строка в коде - это не внедрение.
Я добавил в библиотеку ролика шрифт, и задал в linkage его идентификатор и отметил галку "Export for ActionScript". Этого недостаточно?
Код:

tf1.embedFornts=true;
это тоже уже написал. Собственно в результате этих действий и получилось то что я описал выше - не отображаются русские символы в текстовом поле.

chingachgoog 17.06.2008 20:20

Внедрение шрифта делается не так. (поищите поиском по форуму).
А если делаете как вы, то надо писать my_fmt2.font = "имя_фонта_в_библиотеке" и проверить есть ли у этого фонта русские символы вообще. Но такой вариант довольно гиблый и негибкий. Лучше научиться нормально внедрять.

MarVal 17.06.2008 21:43

Спасибо за помощь. Проблема решена внедрением шрифта в главном ролике.


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

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