Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему не видно шрифтов если им сделать Embed (http://www.flasher.ru/forum/showthread.php?t=132638)

Aerohd 17.11.2009 13:30

Почему не видно шрифтов если им сделать Embed
 
Всем привет.
Почему не видно шрифтов если им сделать Embed?Ситуация такая, есть игра , которая использует swc компоненты(исхожникики компонетов есть) , игра и swc компоненты сделанны в flash cs4 под 10 плеер.В swc компоненте есть мувиклип , в мувиклипе текстовое поле, на мувиклип навешен класс, когда создаю класс текствому полю внутри мувиклипа присваиваю текст , и вот если это текстовому полю сделать embed не важно как (программно или вручную) то текст перестает отображаться, когда я создаю этот мувиклип из swc компонента.Никто не сталкивался с такой проблемой?

Волгоградец 17.11.2009 13:32

Нужные символы должны быть заэмбежены в текстовое поле.

Aerohd 17.11.2009 13:39

Волгоградец , что это значит? Я же говорю что делаю embed, делал все символы английские и цифры и знаки , не отображается

Волгоградец 17.11.2009 14:11

Пример можно?

Aerohd 17.11.2009 14:34

Исходники?Очень много весят.

Волгоградец 17.11.2009 14:45

Сократите проблему до пары классов - выкиньте все ненужное. Если вы сделали embed текстовому полю, то символы не могут не отображаться (если конечно не глюк IDE - в CS4 с мириадом и тахомой бывают проблемы - символы отображаются некорректно, но не пропадали ни разу).

Aerohd 17.11.2009 14:48

До пары классов сократить не могу, просто не запуститься игра.Но если делаю embedFonts программно созданому тестовому полю, то оно тоже не отображается.Хрень какаято :).

Волгоградец 17.11.2009 15:13

Код AS3:

var txtFormat:TextFormat = new TextFormat();
txtFormat.font = "Arial";
txtFormat.size = 50;
 
var txt:TextField = new TextField();
txt.text = "Hello 1234567890!";
txt.autoSize = TextFieldAutoSize.LEFT;
txt.embedFonts = true;
txt.setTextFormat(txtFormat);
addChild(txt);

На сцене должно лежать динамическое текстовое поле с заэмбеженными "Hello 1234567890!"

Aerohd 17.11.2009 15:58

Спасибо Волгоградец.Вот тот код что ты привел в принципе не нужен, достаточно разместить текстовое поле с заэмбежеными буквами и цифрами.Единственно не совсем понятно , я ведь в swc компоненте (во флашке) в те текстовые поля тоже вписывал буквы и эмбедил те текстовые поля , пояему же не работало.
Еще не работает это решение , если сделать мувиклипу в котором текстовое поле rotationX. Тоже непонятна причина. Интересно это моя бага или флешовая :)

Alex Lexcuk 18.11.2009 00:18

А я внедряю шрифт по тутору вот так
Код AS3:

package  
{
        import flash.display.*;
        import flash.text.*
 
        public class DocFontUse extends Sprite
        {
                        [Embed(source='ACADEMY.TTF', fontName='vampire_ttf')]
                        public static var Geisha_ttf:Class;
 
                        /*[Embed(source = 'C:/WINDOWS/Fonts/GARA.TTF', fontName = '_Garamond')]
                        public var _Garamond:Class;
                        */

                public function DocFontUse()
                {
 
                        //смотрим все фонты
                        //var allFonts:Array = Font.enumerateFonts(true);
                        //allFonts.sortOn("fontName", Array.CASEINSENSITIVE);
                        Font.registerFont(Geisha_ttf);
                        //смотрим ембеденные фонты
                        var embeddedFonts:Array = Font.enumerateFonts(false);
                        //embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
                        trace(embeddedFonts);
                        //trace показывает
                        //[object Font],[object DocFontUse_Vampire_ttf]
                        //очеидно, что DocFontUse_Vampire_ttf наш вампирячий фонт
 
 
                        trace("Vampire_ttf LOADED");
                        var font:DocFontUse_Geisha_ttf = new DocFontUse_Geisha_ttf();
                        var txt_fmt:TextFormat=new TextFormat();
                        txt_fmt.font=font.fontName;
                        txt_fmt.size = 25;
                        var txt:TextField=new TextField();
                        txt.autoSize=TextFieldAutoSize.LEFT;
                        txt.defaultTextFormat=txt_fmt;
                        txt.embedFonts=true
                        txt.htmlText ='Меню      Reset';
                        txt.selectable = true;
                        txt.rotation = 45;
                        txt.x = 100;
                        txt.y = 100;
                        addChild(txt);
 
                }
 
        }
 
}

работает четко.

firsoff 18.11.2009 07:33

я делаю так:
1. в swc делаю мувик - контейнер с текстовыми полями ( каждое поле нужный шрифт). выставляю там emmbed глифы, связываю с классом допустим FontsContainer
2. при запуске приложения где нибудь делаю
var fc:FontsContainer = new FontsContainer ()
3. в нужных полях просто ставлю textFormat с именем шрифта из FontsContainer

плюсы:
набор шрифтов просто редактируется ( колво, глифы)

минусы:
иногда то отображаемое название шрифта во flash ide не соотв. системному названию ( лечится простым трейсом формата нужного поля в FontsContainer )

iflamberg 18.11.2009 14:34

2Alex:
очень неэкономно эмбедите. Вы так все абсолютно все символы шрифта включаете.


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

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