Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.08.2010, 21:57
Greved вне форума Посмотреть профиль Отправить личное сообщение для Greved Найти все сообщения от Greved
  № 1  
Ответить с цитированием
Greved

Регистрация: Aug 2010
Сообщений: 5
По умолчанию Проблема с embedFonts

Я недавно начал изучать этот замечательный язык по книжке Мука, добрался до встраивания шрифтов.
Полностью копирую пример из книги - не отображается текст, хотя само поле отрисовывается (при textfield.border=true).
Вот пример моего кода:
Код AS3:
package { 
	import flash.display.*; 
	import flash.text.*; 
 
 
	public class HelloWorldVerdana extends Sprite {
 
 
	public function HelloWorldVerdana ( ) { 
 
		var pole:TextField=new TextField();
		pole.embedFonts=true;
		pole.text="hello world";
		pole.border=true;
		pole.width=300;
		pole.setTextFormat(new TextFormat("ar_font1",20));
		addChild(pole);
         }
      }
}
Интересно, что когда убираю строчку
Код AS3:
 pole.embedFonts=true;
все работает, и присваивается новый формат текста с встроенным шрифтом ar_font1.
В книге Мука представлены ввиду встраивания [Embed]
Код AS3:
[Embed(source="E:/Windows/Fonts/Verdana.ttf", fontFamily="Verdana")] 
	private var verdana:Class;
Код AS3:
  var t:TextField = new TextField( ); 
		t.embedFonts = true; 
 
		t.htmlText = "<FONT FACE='Verdana'>Hello world</FONT>"; 
		addChild(t);
и через стили CSS.
С ними та же история: с строчкой t.embedFonts = true; - не работает, без нее - работает.
стоит Flash CS5).
Помогите разобраться пожалуйста с проблемой)

Старый 12.08.2010, 22:40
vinch вне форума Посмотреть профиль Отправить личное сообщение для vinch Найти все сообщения от vinch
  № 2  
Ответить с цитированием
vinch

Регистрация: Feb 2010
Сообщений: 95
Цитата:
с строчкой t.embedFonts = true; - не работает, без нее - работает.
Оно то работает, но только на компьютере, где установлен этот шрифт.
Внедрить шрифты с ЦС5 (в отличии от ЦС4) мне так и не удалось, на форуме ничего не подсказали.
В результате, пользуюсь имбэдом:
Код AS3:
[Embed(source = '../lib/Square_rough.ttf', fontName = 'Square rough', mimeType = 'application/x-font' )]
private const FontClass:Class;
public static var font:String = (new FontClass()).fontName;
У меня работает с embedFonts = true.

Старый 12.08.2010, 23:11
Greved вне форума Посмотреть профиль Отправить личное сообщение для Greved Найти все сообщения от Greved
  № 3  
Ответить с цитированием
Greved

Регистрация: Aug 2010
Сообщений: 5
у меня вызывает ошибку данный код
Код:
Call to possibly undefined method FontClass
Может конечно это отсутствие опыта, но странно что ты вызываешь метод -конструктор класса FontClass
Код AS3:
public static var font:String = (new FontClass()).fontName;
хотя этого метода не существует).
Если у тебя работает, можешь скинуть полностью рабочий пример с текстовым полем и текстом в нем с встроенным шрифтом, пожалуйста?

Старый 13.08.2010, 00:44
vinch вне форума Посмотреть профиль Отправить личное сообщение для vinch Найти все сообщения от vinch
  № 4  
Ответить с цитированием
vinch

Регистрация: Feb 2010
Сообщений: 95
Хорошо, без проблем, добавил архив к сообщению. Надеюсь, ты работаешь с FD; если нет, то код в /src/Main.as, файл шрифта в /lib, а бинарник в /bin.
Цитата:
Может конечно это отсутствие опыта, но странно что ты вызываешь метод -конструктор класса FontClass
Код AS3:
public static var font:String = (new FontClass()).fontName;
хотя этого метода не существует).
Чего не существует? Конструктор есть у всех классов. Класс FontClass - это класс шрифта, который наследует класс шрифта Font; он созданный при помощи [Embed(...)].
Переменную font ввел только для удобства, чтобы каждый раз не писать название шрифта.
Наверное, там лучше писать даже:
Код AS3:
public static var font:String = (new FontClass() as Font).fontName;
для удобства.
Упс, я в предыдущем сообщении static упустил (хотя это в данном случае не нужно, я скопировал с кода приложения).
Вложения
Тип файла: rar ExampleEmbed.rar (20.4 Кб, 47 просмотров)


Последний раз редактировалось vinch; 13.08.2010 в 00:48.
Старый 13.08.2010, 10:44
Greved вне форума Посмотреть профиль Отправить личное сообщение для Greved Найти все сообщения от Greved
  № 5  
Ответить с цитированием
Greved

Регистрация: Aug 2010
Сообщений: 5
Спасибо большое за пример.
Вначале специально запустил все swf - все работает). Затем попытался запустить в Flash CS5, он попросил прописать путь к Flex SDK (см. картинку в вложениях) . Указал путь и до папки с ним, и добавил отдельно flex.swc. После этого ничего не отображается.
Это уведомление было и в моих собственных примерах, но я принял его за должное, т.к. в книге Мука прямо сказано: "Чтобы в приложении Flash CS* работал тег Embed необходимо указать путь к файлу flex.swc".
Затем установил FlashDevelop, открыл ExampleEmbed.as3proj - запускаю - FD попросил указать путь к папке с Flex SDK. После того как прописал путь - все то же самое что и в CS5 - ничего не отображается. И при попытке запустить swf из автономной версии плейера тоже ничего не видно.Flex SDK скачивал с сайта adobe.
Не понимаю в чем может быть проблема. Я так понял проблема уже не в коде...

В FD нашел такую строку при компиляции

Loading configuration file F:\flex_sdk_4.1\frameworks\flex-config.xml

возможно надо что нибудь там поправить?
Изображения
 


Последний раз редактировалось Greved; 13.08.2010 в 11:03.
Старый 13.08.2010, 11:52
vinch вне форума Посмотреть профиль Отправить личное сообщение для vinch Найти все сообщения от vinch
  № 6  
Ответить с цитированием
vinch

Регистрация: Feb 2010
Сообщений: 95
Тут я не знаю, что сказать.
Я не изменял никаких конфигов, и все работает. Правда, у меня flex sdk 3.5, может в этом дело?

Старый 13.08.2010, 14:00
Greved вне форума Посмотреть профиль Отправить личное сообщение для Greved Найти все сообщения от Greved
  № 7  
Ответить с цитированием
Greved

Регистрация: Aug 2010
Сообщений: 5
скачал flex 3.5a. В FD все к счастью заработало, но при попытке запустить Main.as в Flash CS5 все по прежнему(.
А случай с подгрузкой внешнего swf файла с шрифтами все равно ни там, ни там не работает(во вложении).
Вложения
Тип файла: rar HelloWorld.rar (559.2 Кб, 30 просмотров)

Старый 28.08.2010, 11:41
i11uminator вне форума Посмотреть профиль Отправить личное сообщение для i11uminator Найти все сообщения от i11uminator
  № 8  
Ответить с цитированием
i11uminator

Регистрация: Jul 2010
Сообщений: 3
Та же самая проблема. Писал с Flex SDK 3.1. Все работало. внедренные тегом EMBED шрифты отображались. Скачал Flex SDK 4.1 Шрифты отображатся перестали. Может их теперь как-то по другому внедрять нужно? отпишитесь, если кто выяснил.

Старый 29.08.2010, 21:06
D12 вне форума Посмотреть профиль Отправить личное сообщение для D12 Найти все сообщения от D12
  № 9  
Ответить с цитированием
D12
меценат
 
Аватар для D12

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
прошу прощения что не вникал, но была проблема с внедрением шрифта, прокопал пол - рунета нашел кучу не понятной информации которая пригодиться еще, но помогло замена шрифта типа ttf на шрифт типа otf

надеюсь вам поможет
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники

Старый 29.08.2010, 22:59
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 10  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
я тоже не вникал особо в топик, но вшить ттф на этапе компиляции можно по крайней мере двумя способами
1) из ttf файла что лежит в папке assets
Код AS3:
[Embed(source='assets/paola.ttf', fontName="paola", mimeType="application/x-font-truetype", embedAsCFF=false)]
public var  font:Class;
2) скомпилированный в swf при помощи flash IDE (этот способ быстрее т.к. шрифт уже скомпилирован)
Код AS3:
[Embed(source="assets/assets.swf", symbol="LinkageName")]
public var font:Class;

посмотреть список шрифтов которые удалось успешно вшить можно так:
Код AS3:
var fontArray:Array = Font.enumerateFonts(false);
for(var i:int = 0; i < fontArray.length; i++) {
	var thisFont:Font = fontArray[i];
	trace(i+") name: " + thisFont.fontName +"  typeface: " + thisFont.fontStyle);
}
Добавлено через 2 минуты
Цитата:
Сообщение от i11uminator Посмотреть сообщение
Та же самая проблема. Писал с Flex SDK 3.1. Все работало. внедренные тегом EMBED шрифты отображались. Скачал Flex SDK 4.1 Шрифты отображатся перестали. Может их теперь как-то по другому внедрять нужно? отпишитесь, если кто выяснил.
embedAsCFF=false

и всё будет как раньше
__________________
Хороший отдых - половина работы.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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