PDA

Просмотр полной версии : Embedded fonts Flash CS3 проблема


AlexFomin
07.05.2007, 12:52
Подскажите плз кто знает по поводу следующей ситуации:
Есть проект в Flash CS3, в нем присутствует главный FLA файл(editor.fla), в нем используется шрифт "MarkerFeltThin" (шрифт внедрен в swf что подтверждается в Size Report). так же есть класс для собственной кнопки SBut.as. Кнопка в какой-то момент создается в editor.fla путем создания экземпляра кнопки SBut, в качестве шрифта используемого для надписи на кнопке пытаюсь применять тот шрифт "MarkerFeltThin" что внедрен в editor.swf. Если шрифт в классе кнопки делать embedFonts = false, то надпись есть (системным шрифтом), а если embedFonts = true, то надписи нет.

так вот вопрос в том как же в данном случае работать с шрифтами чтобы на кнопке отображался произвольный шрифт используемый в главном FLA?
в документации не смог найти решения:confused:

код создания экземпляра кнопки:


var addFileBut:SBut = new SBut(250, 300, 140, 30, "LABEL");


код конструктора кнопки:

public function SBut(_xpos:uint, _ypos:uint, _w:uint, _h:uint, _lab:String) {

var myFmt:TextFormat = new TextFormat();
myFmt.font = "MarkerFeltThin";
myFmt.color = 0x00FF00;
myFmt.size = 14;

var mySprite:Sprite = new Sprite();
mySprite.x = _xpos;
mySprite.y = _ypos;
mySprite.graphics.beginFill(0xFF0000);
mySprite.graphics.drawRoundRect(0, 0, _w, _h, cornerRadius);
mySprite.graphics.endFill();

var butLabel:TextField = new TextField();
butLabel.type = TextFieldType.DYNAMIC;
butLabel.embedFonts = false;
butLabel.width = _w;
butLabel.selectable = false;
butLabel.text = _lab;
butLabel.defaultTextFormat = myFmt;

mySprite.addChild(butLabel);

var mySpriteHit:Sprite = new Sprite();
mySpriteHit.graphics.beginFill(0xFFFFFF,0);
mySpriteHit.graphics.lineStyle(borderSize, borderColor);
mySpriteHit.graphics.drawRoundRect(0, 0, _w, _h, cornerRadius);
mySpriteHit.graphics.endFill();
mySpriteHit.buttonMode = true;
mySpriteHit.addEventListener(MouseEvent.CLICK, function сlickPrint(event:Event):void {
var imgUpl:ImageUploader = new ImageUploader();
});
mySprite.addChild(mySpriteHit);
Stage.root.addChild(mySprite);
}

etc
07.05.2007, 13:01
Шрифт имеет имя font1, а в TextFormat уже «MarkerFeltThin». Для начала в том же Size report нужно выяснить, как называется шрифт и использовать это название.

AlexFomin
07.05.2007, 13:29
Сейчас поправил текст сообщения, шрифты в реальности соответствовали друг другу, это только тут для примера решил использовать font1. т.е. теперь окончательный вид проблемы.

etc
07.05.2007, 13:34
А каким образом встроен шрифт в editor.swf?

AlexFomin
07.05.2007, 13:53
Встраивать пытался двумя способами:
1.на сцене присутствует динамическое текстовое поле у которого задан указанный шрифт и включено Embed... для нужных наборов символов
2.в библиотеке создавался новый шрифт, указывался данный и в параметрах Linkage указывалось Export for Action Script + Export in first frame(тут кстати не понял что собственно делать с классом шрифта)

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

etc
07.05.2007, 14:00
Показывайте исходник.

AlexFomin
07.05.2007, 15:34
Вот тут упрощенная версия исходника, сам fla + классы, но прицип остается:
17208

в fla файле шрифт в библиотеке и текстовое поле для Embedding'а(сейчас ничего не внедряется, поскольку работает механизм с шрифтом в библиотеке).

etc
07.05.2007, 15:41
1) Шрифт в либе удалить;
2) Выбрать в окне Embed необходимые диапазоны символов (у меня ничего не было выбрано);
3) Переставить строки местами:
butLabel.text = _lab;
butLabel.defaultTextFormat = myFmt;

Ведь сначала нужно задать дефолтный стиль, а уже потом текст присваивать.

AlexFomin
07.05.2007, 15:52
Спасибо! с присвоением формата теперь понятно:) сорри за отнятное время:rolleyes: