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

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

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
The bomb! Проблема с отображением подгружаемых в runtime шрифтов

Бьюсь над этим уже довольно долго, поэтому решил написать сюда т.к. собственные идеи иссякли. Я делаю приложение в котором пользователь может задавать шрифт текста выбирая его из комбобокса. Каждый шрифт подгружается в виде отдельной SWF, в которую он заэмбедден следующим образом:
Код AS3:
package
{
 
	import flash.display.MovieClip;
 
	public class Journal extends MovieClip
	{
		[Embed(source = "Journal/JournalC.otf", fontName="JournalC", fontStyle="normal", fontWeight="normal", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
		public var JournalC:Class;
 
		[Embed(source = "Journal/JournalC-Bold.otf", fontName="JournalC", fontStyle="normal", fontWeight="bold", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
		public var JournalCBold:Class;
 
		[Embed(source = "Journal/JournalC-Italic.otf", fontName="JournalC", fontStyle="italic", fontWeight="normal", mimeType="application/x-font", advancedAntiAliasing="true", embedAsCFF="false")]
		public var JournalCItalic:Class;
 
		public function Journal()
		{
			Font.registerFont (JournalC);
			Font.registerFont (JournalCBold);
			Font.registerFont (JournalCItalic);
 
		}
	}
 
}
В основной флешке шрифты загружаются следующим образом (стараюсь приводить только относящийся к делу код, а вообще там все сложно):
Код AS3:
fontsLoader = new Loader ();
			fontsLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, fontLoaded);
			fontsLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOERROR);
 
 
// это естественно в цикле
var path:String = Global.URL_PATH + Global.FONTS_PATH + fontsInfo.fonts.font[fontsCounter].lib.@src;
			fontsCounter++;
			fontsLoadedPathes.push(path);
			var context:LoaderContext = new LoaderContext();
			//context.securityDomain = SecurityDomain.currentDomain;  
			context.applicationDomain = ApplicationDomain.currentDomain;
			fontsLoader.load(new URLRequest(path), context);
 
//здесь обрабатывается событие загрузки
private function fontLoaded(ev:Event):void 
		{
			var target:LoaderInfo = ev.target as LoaderInfo;
			var mc:MovieClip = target.content as MovieClip;
			fonts.push(mc);
			addChild(mc);
		}
Теперь описание проблемы. Никаких ошибок не выкидывается, но при локальном запуске флешки на моем компьютере - шрифты не меняются, при выборе шрифта из комбобокса текст изчезает.
Загружаю флешку на сервер (тот же домен, где лежат и SWFки со шрифтами), запускаю флешку с сайта - все работает, НО ТОЛЬКО НА МОЕЙ МАШИНЕ!!
Если же зайти на сайт с любого другого компа, текст при переключении шрифта пропадает.
Сперва я подумал. что это проблемы с безопасностью, песочницами, ApplicationDomain и тому подобным. Но вдумчивое изучение доков на эту тему ничего не дало, ведь все грузится с одного домена.
Буду благодарен за помощь, если кому то нужна ссылка на приложение, дам в личку.

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Простой совет, после загрузки выведи Font List ( думаю с enumerateFonts работал, если нет найди ). И увидишь какие шрифты реально встроились, а какие нет и ожидают
__________________
Марк Tween

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
забыл сказать - я это делал, локально загружаемые шрифты не выводятся, с севера вывожу фонтлист в консоль, вижу все загруженные шрифты. На других машинах посмотреть с сервера список шрифтов пока нет возможности, но я думаю результат будет очевиден. Найти корень проблемы мне это не помогло.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
http://flasher.ru/forum/showthread.php?t=169912
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Wolsh, спасибо за помощь, но эту ветку я внимательно читал и перечитывал еще когда организовывал смену шрифтов, ни нашел там ничего, что помогло бы мне решить проблему, хотя конечно экспериментировать я продолжу, в том числе и с рецептами описанными там.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. Не хочу обидеть, но действительно самая распространенная ошибка — забыть указать текстовому полю embedFonts = true; Обязательно проверьте.
2. Попробуйте регистрировать шрифты не в конструкторе, а "после", отдельным методом.
__________________
Reality.getBounds(this);

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Да ни нужно ниче регестрировать вообще.
Есть флешка в айде рисуем так текстовое поле, делаем нужный формат, встриваем символы.
Далее грузим ( и даже на сцену добавлять не надо ) - все шрифты на месте.

Код AS3:
package com.in4core.edenSite.utils 
{
	import flash.text.Font;
	/**
	 * ...
	 * @author in4core lab
	 */
	public final class FontManager 
	{
		public static const SharedLibrary:SharedFonts = new SharedFonts();
 
		public static function getFontsListing():void
		{
			var fontsListing:String="";
			var fontArray:Array = Font.enumerateFonts(false);
			fontArray.sortOn(['fontName']);
 
			for (var i:int = 0; i < fontArray.length; i++) 
			{
				var thisFont:Font = fontArray[i];
				fontsListing += thisFont.fontName+ " " + thisFont.fontStyle +"\n";
			}
			trace('Shared fonts : \n' + fontsListing + '---------------');
		}
	}
 
}
Добавлено через 1 минуту
Тут тупо инициализация для embed
Код AS3:
public static const SharedLibrary:SharedFonts = new SharedFonts();
В ваше случае будет инициализатором просто лоадер
__________________
Марк Tween

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

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Спасибо всем за помощь. embedFonts = true; - стоит, я тоже об этом сперва подумал. Добрался до машины, на которой проверил трейсы фонтлиста с сервера - все шрифты выводятся, возможно проблема и не в этом. Так что буду ковыряться :-)

Добавлено через 14 часов 26 минут
после некоторых манипуляций с кодом обнаружил, что если закомментировать строчку embedFonts = true; шрифты показываются как надо (но они у меня установлены в системе, поэтому это не удивительно). Если оставить эту строчку шрифты не показываются ни локально ни с сервера НО список зарегистрированных шрифтов показывает что нужные шрифты зарегистрированы в системе!!!! В консоли видно, что шрифт присваивается текстформату, а тот в свою очередь присваивается текстфилду, т.е. каких то сторонних проблем по присвоению шрифта в ходе исполнения кода нет.

Добавлено через 14 часов 55 минут
нет, соврал. Трейсы приходят из подгружаемых флешек. Шрифты из фонт листа главной флешки показывают что нужные шрифты не заэмбедены.

Добавлено через 15 часов 10 минут
похоже проблема с SWF со шрифтами попробую перекомпилить в чем нибудь

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

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

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


 


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


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