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

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

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

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Question Внедрение шрифта

Внедряю шрифт через один класс, использую его в классе, содержащем static константы,
Далее передаю через метод текстовые форматы в класс, поле не отображается.
В классе создается новое поле ему задается формат. Причем в другом классе, подгружаю swf'ку, использую этот же текстовый формат, текст отображается.
Использую SDK 4.6, в Embed шрифта стоит параметр embedAsCFF = 'false'. Вообщем вот:
Код AS3:
[Embed(source = "../../fonts/verdana.ttf", embedAsCFF = 'false', fontName = "verdana", fontStyle = "regular", fontWeight = "normal", mimeType = "application/x-font-truetype")]
private const VERDANA_NORMAL:Class;
Форматы:
Код AS3:
public class TextFormatManager 
{
	public static const textHint:TextFormat = new TextFormat(EmbedFont.VERDANA, 14, 0xffce60, false, false, false, null, null, TextFormatAlign.CENTER);
}
Ну и поля, метод:
Код AS3:
public function setTextFormats(upFormat:TextFormat, overFormat:TextFormat):void
{
	_upField.embedFonts = true;
	_upField.defaultTextFormat = upFormat;
	_overField.embedFonts = true;
	_overField.defaultTextFormat = overFormat;
}
Подскажите какие могут быть причины.

Старый 08.03.2012, 17:43
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Вот так точно работает:
Код AS3:
public class TahomaFont {
	[Embed(source = "../../../../lib/TAHOMA.TTF", fontName = "Tahoma", 
	mimeType = "application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
	private var font:Class;
 
	public static const NAME:String = "Tahoma";
}
__________________
тут я

Старый 08.03.2012, 17:49
FriOne вне форума Посмотреть профиль Отправить личное сообщение для FriOne Найти все сообщения от FriOne
  № 3  
Ответить с цитированием
FriOne
 
Аватар для FriOne

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Вообще класс выглядит так и не работает.. точнее не везде работает.
Код AS3:
public class EmbedFont extends Sprite 
{
	public static const VERDANA:String = "verdana";
 
	//normal
	[Embed(source = "../../fonts/verdana.ttf", embedAsCFF = 'false', fontName = "verdana", fontStyle = "regular", fontWeight = "normal", mimeType = "application/x-font-truetype")]
	private const VERDANA_NORMAL:Class;
	//bold
	[Embed(source = "../../fonts/verdanab.ttf", embedAsCFF = 'false', fontName = "verdana", fontStyle = "regular", fontWeight = "bold", mimeType = "application/x-font-truetype")]
	private const VERDANA_BOLD:Class;
	//italic
	[Embed(source = "../../fonts/verdanai.ttf", embedAsCFF='false', fontName = "verdana",  fontStyle = "italic", fontWeight = "nolmal", mimeType = "application/x-font-truetype")]
	private const VERDANA_ITALIC:Class;
	//bold/italic
	[Embed(source = "../../fonts/verdanaz.ttf", embedAsCFF='false', fontName = "verdana",  fontStyle = "italic", fontWeight = "bold", mimeType = "application/x-font-truetype")]
	private const VERDANA_BOLD_ITALIC:Class;
 
	public function EmbedFont() 
	{
		Font.registerFont(VERDANA_NORMAL);
		Font.registerFont(VERDANA_BOLD);
		Font.registerFont(VERDANA_ITALIC);
		Font.registerFont(VERDANA_BOLD_ITALIC);
	}		
}
Класс создается точно перед использованием, не могу найти причины (

Добавлено через 40 минут
Вообщем сделал такой тест:
Код AS3:
public function setTextFormats(upFormat:TextFormat, overFormat:TextFormat):void
{
	_upField.embedFonts = true;
	_upField.defaultTextFormat = upFormat;
	_overField.embedFonts = true;
	_overField.defaultTextFormat = overFormat;
	trace(TextField.isFontCompatible(EmbedFont.VERDANA, FontStyle.REGULAR));
	var embeddedFonts : Array = Font.enumerateFonts(false);
	embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
	trace("\n----- Enumerate Fonts -----");
	for(var i : int = 0;i < embeddedFonts.length;i++) {
		trace(embeddedFonts[i].fontName);
		trace(embeddedFonts[i].fontType);
	}
}
Выдал:
Код:
true

----- Enumerate Fonts -----
verdana
embedded
verdana
embedded
verdana
embedded
verdana
embedded
verdana
embedded
verdana
embedded
verdana
embedded
verdana
embedded
Не понятно почему шрифты идут в двойном количестве, но они встроены!
Поле добавлено на сцену, но то поле, что добавлено в скаченную swf'ку не видно,
а для того, что уже есть в классе применяется и отображается.


Последний раз редактировалось FriOne; 08.03.2012 в 18:00.
Старый 08.03.2012, 19:52
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Не понятно почему шрифты идут в двойном количестве, но они встроены!
Поле добавлено на сцену, но то поле, что добавлено в скаченную swf'ку не видно,
а для того, что уже есть в классе применяется и отображается.
Пожалуйста, переведите на русский. Вообще не понятно, что Вы делаете, что хотите получить и что получается.

Добавлено через 2 минуты
И да, нет смысла постить код который работает и трейсы, показывающие что все ок. Вы не на экзамене. Вам нужно, чтобы ошибка была найдена, а не наоборот.
__________________
Reality.getBounds(this);

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

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Вообщем, мне нужно, чтобы поле отобразилось)
У меня есть класс TextButton, в нем текстовое поле,
я передаю туда текстовый формат и ставлю embed Fonts true.

Шрифт как я понял встаривается, но поле не отображается,
Порылся по статьям, нашел про applicationDomain, но не особо понимаю как это работает.

Вопрос теперь наверно стоит так, может ли повлиять домен на отображение поля?
И как проверить влияет ли домен на это?

Добавлено через 1 минуту
Я гружу из swf'ки класс, текстовое поле в нем принимает мой формат и отображается,
Но я создаю TextButton в этом классе(экземпляре класса), передаю формат и оно не отображается.


Последний раз редактировалось FriOne; 08.03.2012 в 20:11.
Старый 08.03.2012, 21:11
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Уточните.
Цитата:
Я гружу из swf'ки класс
Вы загружаете в текущую свф другой свф-файл. Вытаскиваете из загруженного свф некий класс и создаете его экземпляр - в текущей свф или в загруженной?
Далее - в этом классе создается текстФилд, который отображает шрифт, внедренный в текущем свф. Но создаваемый в этом экземпляре буттон не показывает в своем лейбел этот внедренный шрифт?
p.S. Бердск? Привет, земляк))))
__________________
Reality.getBounds(this);

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

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Эм.. запутался) Гружу свф, в нем мувик вообщем,
в этом мувике текстовое поле, которое принимает формат,
в этот же мувик я добавляю textButton.
Текущая свф - та что главная? Юзаю, готовый класс загрузчик, так что куда что он грузит мало понимаю)
P.S. Дааа! Привет!!))

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Эм.. запутался)
А отсюда вообще ничего непонятно. где класс, где шрифт, где кнопка, кто создает, в ком создает... полный хаос.
Сам Класс TextButton находится в главной флэшке?
Шрифт внедрен в главную флэшку?
Экземпляр TextButton создается в главной флэшке и потом помещается в загруженную?
ИЛИ
Сам Класс TextButton находится в загружаемой флэшке?
Экземпляр создается и размещается в загружаемой флэшке, но пытается использовать шрифт, который внедрен в главную флэшку?
Попробуй такими словами рассказать))
__________________
Reality.getBounds(this);

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Ясен красен. Контекст-то (application domain) не тот, в котором есть шрифт. Сделайте Font.registerFont для глобальной области видимости шрифта.

Вот тут обсуждали.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 08.03.2012 в 21:35.
Старый 08.03.2012, 21:42
FriOne вне форума Посмотреть профиль Отправить личное сообщение для FriOne Найти все сообщения от FriOne
  № 10  
Ответить с цитированием
FriOne
 
Аватар для FriOne

Регистрация: Jul 2010
Адрес: Бердск, НСК
Сообщений: 171
Записей в блоге: 1
Рад что проблема все таки в этом)
Объект EmbedFont создается в main, там создается загрузчик,
грузит, тут же в main делю полученный мувик, отдаю однин мувик в класс Preloader,
этот мувик и есть тот в который я сую TextButton и в котором находится поле, в котором отображается текст.

Загрузчик какой-то замудренный.. есть такой коммент там, незнаю, мб прояснит что-то:
Код:
 /**
 * домен приложения, содержащего классы (для экспорта классов)
 * если swf содержат классы он помещается в новый домен приложения,
 * в противном случае в дочерний домен приложения
 */
private var _appDomain:ApplicationDomain;

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

Теги
developer , внедрение , фрифты

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

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


 


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


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