Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   embed fonts передача кирилицы через переменную (http://www.flasher.ru/forum/showthread.php?t=140044)

uncle_sam 18.05.2010 17:43

embed fonts передача кирилицы через переменную
 
столкнулся со следующей проблемой:

создаю класс от спрайта в нем аттачу текстовое поле и делаю ембед шрифтов.
этому текстовому полю передаю в конструкторе через аргумент строку. Проблема в том что при создании экземпляра класса и передачи соотв. строки в конструктор текст отсутсвует.

Код AS3:

        public class Preview_OnOff extends Sprite         {
 
 
                [Embed(source = '../../../lib/OfficinaSansBoldOSC.otf', fontName = "OfficinaSansC", fontFamily = "OfficinaSansC", fontStyle = "ITC Officina Sans Bold Cyrillic",  unicodeRange = " U+0400-U+04FF", mimeType = "application/x-font-truetype")]
 
                private static var OfficinaSansC:Class; //Ембедим кирилицу
 
              //конструктор
 
                public function Preview_OnOff(labelText:String):void {
 
 
 
                        var labelFormat:TextFormat = new TextFormat();
                        labelFormat.font  = 'OfficinaSansC';
                        labelFormat.color = 0x044568;
                        labelFormat.size = 10;
                        labelFormat.align = TextFormatAlign.CENTER;
 
 
                        var label:TextField = new TextField();
                        label.text = labelText;
                        label.selectable = false;
                        label.embedFonts = true;
 
 
 
 
 
                        label.setTextFormat(labelFormat)
                        addChild(label);
 
                }

кириллица по идее показывается если задать тот самый текст просто русским текстом в кавычках

Код AS3:

label.text = "этот текст видно";

ну вот собственно и вопрос почему если передавать прямо текст то он показывается а если через переменную то нет? подскажите в чем может быть проблема.

proxiServer 18.05.2010 17:57

Код AS3:

label.text = labelText;

попробуйте после ембеда сделать.

uncle_sam 18.05.2010 18:11

proxiServer, не понимаю, что вы имеете ввиду.
Просто действительно первый раз встречаюсь с такой нелепостью. Может быть у меня диапазон символов какой то неправильный?

Rzer 18.05.2010 18:36

Перенеси присвоение текста после строки label.setTextFormat(labelFormat).

ps. И ещё может быть fontStyle="normal" fontWeight="bold", если в твоём шрифте только жирное начертание есть. Не забывай в TextFormat тоже указать, что используешь жирное начертание.

dimarik 19.05.2010 10:37

А с каких пор у нас конструктор что-то возвращает?

uncle_sam 19.05.2010 12:20

Вложений: 1
по поводу конструктора вы, димарик, безусловно правы. свалю это не на автокомплит а на свою невнимательность. Но увы, это проблему не решило. Пробовал установить текст после присвоения формата и вообще ничего не показывается. Получается это все проблема ембеда шрифта?
Если кому не лень выложите проект в Flashdevelop, где вы ембедите шрифт. Я этот шрифт вложил . В поиске смотрел, нашел лишь примеры кода, которые мне объяснили как надо ембедить, но увы, видимо радиус кривизны моих рук еще достаточно велик

Wolsh 19.05.2010 12:33

Но Вы же говорите
Цитата:

кириллица по идее показывается если задать тот самый текст просто русским текстом в кавычках
Тогда при чем здесь embed? Нормально разберитесь - у Вас нужный текст поле не показывает или переменная не содержит?

-De- 19.05.2010 12:55

Вложений: 1
Всё нормально показывает...

uncle_sam 19.05.2010 13:02

если я устанавливаю текст до присвоения формата

Код AS3:

 
                        var labelFormat:TextFormat = new TextFormat();
                        labelFormat.font  = 'OfficinaSansC';
                        labelFormat.color = 0x044568;
                        labelFormat.size = 10;
                        labelFormat.align = TextFormatAlign.CENTER;
 
 
                        var label:TextField = new TextField();
                        label.text = labelText;
                        label.selectable = false;
                        label.embedFonts = true;
                        label.setTextFormat(labelFormat)
                        addChild(label);

то у меня возникает ситуация, которую я описал в своем 1м сообщении, когда вместо строки
Код AS3:

label.text = labelText;

я пишу
Код AS3:

label.text = "что то кириллицей";

текст "что то кирилицей " будет отображаться, а текст, содержащийся в аргументе labelText - нет

если я присваиваю текст после присвоения формата, то у меня вообще ничего не показывается в текстовом поле.
Код AS3:

                var labelFormat:TextFormat = new TextFormat();
                        labelFormat.font  = 'OfficinaSansC';
                        labelFormat.color = 0x044568;
                        labelFormat.size = 10;
                        labelFormat.align = TextFormatAlign.CENTER;
 
 
                        var label:TextField = new TextField();
                        label.selectable = false;
                        label.embedFonts = true;
                        label.setTextFormat(labelFormat)
                        label.text = labelText;
                        addChild(label);

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

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

Вы уж простите мне мою истерию, надо быть терпеливым блаблабла, но вот просто накипело. Тем неменее спасибо всем кто откликнулся.

-De- 19.05.2010 13:09

а, влепи ещё что-ли для надёжности
Код AS3:

label.defaultTextFormat = labelFormat;

setTextFormat какбэ не ставит формат для БУДУЩИХ текстов, только для текущего. Да, setTextFormat пожалуй лучше убрать совсем.
Прямо насчёт "какого черта кириллический текст в динамическом поле у меня не хочет показываться":
Код AS3:

label.embedFonts = true;

- шрифт должен быть внедрён или текст не покажется. Какой шрифт - указывается в текст формате. По дефолту (если не ставить defaultTextFormat или не ставить setTextFormat после установки текста) указан не внедрённый шрифт.


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

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