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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Грузим FontFamily из отдельного swf

Здравствуйте.
Имеем отдельную swf с кодом
Код AS3:
package me.inpictures.data {
 
	import flash.text.Font;
	import flash.text.TextField;
	import flash.text.TextFormat;
 
	import flash.display.Sprite;
 
	public class FontEmbed extends Sprite{
 
		/*    REGULAR                                 */
		[Embed(source="../../../lib/MyriadPro-Regular.otf"
			   ,fontFamily= 'MB'
			   ,fontStyle = 'normal'
			   ,fontWeight	= 'normal'
			   ,mimeType="application/x-font"
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2Pro:Class;
 
 
		/*    BOLD                                    */
		[Embed(source="../../../lib/MyriadPro-Bold.otf"
			   ,fontFamily= 'MB'
			   ,fontStyle = 'normal'
			   ,fontWeight	= 'bold'
			   ,mimeType="application/x-font"
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2ProBold:Class;
 
		/*   ITALIC                                   */
		[Embed(source="../../../lib/MyriadPro-It.otf"
			   ,fontFamily='MB'
			   ,fontStyle = 'italic'
			   ,fontWeight	= 'normal'
			   ,mimeType="application/x-font"
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2ProIT:Class;/*!!!*/
 
		/*   BOLD + ITALIC                            */
		[Embed(source="../../../lib/MyriadPro-BoldIt.otf"
			   ,fontFamily= 'MB'
			   ,fontStyle = 'italic'
			   ,fontWeight	= 'bold'
			   ,mimeType= 'application/x-font'
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2ProBoldIT:Class;
 
		/*   CONDENSED                                          */
		[Embed(source="../../../lib/MyriadPro-Cond.otf"
			   ,fontFamily="MC"
			   ,fontStyle = 'normal'
			   ,fontWeight	= 'normal'
			   ,mimeType="application/x-font"
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2ProC:Class;
 
		/*    CONDENSED BOLD                                    */
		[Embed(source="../../../lib/MyriadPro-BoldCond.otf"
			   ,fontFamily= 'MC'
			   ,fontStyle = 'normal'
			   ,fontWeight	= 'bold'
			   ,mimeType="application/x-font"
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2ProCondBold:Class;
 
		/*   CONDENSED ITALIC                                   */
		[Embed(source="../../../lib/MyriadPro-CondIt.otf"
			   ,fontFamily='MC'
			   ,fontStyle = 'italic'
			   ,fontWeight	= 'normal'
			   ,mimeType="application/x-font"
			   ,embedAsCFF = 'false'
		)]
		public static var Myriad2ProCondIT:Class;/*!!!*/
 
		/*   CONDENSED BOLD + ITALIC                            */
		[Embed(source="../../../lib/MyriadPro-BoldCondIt.otf"
			   ,fontFamily= 'MC'
			   ,fontStyle = 'italic'
			   ,fontWeight	= 'bold'
			   ,mimeType= 'application/x-font'
			   ,embedAsCFF = 'false'
		)]
		public static  var Myriad2ProCondBoldIT:Class;
 
		public function FontEmbed() {
 
		}
 
		public static function setStyle(textField:TextField, fontName:String, size:uint=16):void {
 
			textField.embedFonts = true;
			textField.defaultTextFormat = new TextFormat(fontName);
		}
 
		private function fontInit():void {
			var _arr :Array	= Font.enumerateFonts();
			for each( var i:Font in _arr){
				trace(i.fontName);
			}
		}
	}
}
Здесь всё ок, шрифт подтягивается.

Пробую заатачить через загрузку
Код AS3:
_loader = new Loader();
			var urlRequest:URLRequest = new URLRequest("http:/site.dom/app/font/MyriadPro.swf?"+Math.random());
			_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _loader_onIoError);
			_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loader_onComplete);
			_loader.load(urlRequest);
 
 
		}
 
		protected function _loader_onIoError(event:IOErrorEvent):void
		{
			_loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, _loader_onIoError);
			trace("failed to load the .swf file");
		}
		protected function _loader_onComplete(event:Event):void
		{
			_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _loader_onComplete);
 
			_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed_Myriad2Pro") as Class; 
 
			traceFontRegister();
 
			Font.registerFont(_fontLibrary);  
 
		}
Ругается
Цитата:
ArgumentError: Error #1508: Указано недопустимое значение для аргумента font.
at flash.text::Font$/registerFont()
at me.inpictures.data:ynamicFont/_loader_onComplete()
Код AS3:
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed.Myriad2Pro") as Class;
Код:
ReferenceError: Error #1065: Переменная Myriad2Pro не определена.
	at flash.system::ApplicationDomain/getDefinition()
	at me.inpictures.data::DynamicFont/_loader_onComplete()
Что не так не пойму.

Добавлено через 19 минут
Код AS3:
_fontLibrary=event.target.applicationDomain.getDefinition("me.inpictures.data.FontEmbed") as Class; 
 
traceFontRegister();
 
trace( _fontLibrary.Myriad2Pro ); // [class FontEmbed_Myriad2Pro]
 
Font.registerFont(_fontLibrary.Myriad2Pro); // всё прежний аргумент эррор
__________________
return this...


Последний раз редактировалось AlexCooper; 16.10.2013 в 17:37.
Старый 16.10.2013, 17:36
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Может все-таки так?
Код AS3:
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data::FontEmbed")["Myriad2Pro"] as Class;
или
Код AS3:
_fontLibrary = event.target.applicationDomain.getDefinition("FontEmbed_Myriad2Pro") as Class;
В первом случае Вы обращаетесь к свойству класса FontEmbed. Свойству! При чем тут getDefinition..
Во втором случае Вы обращаетесь к классу-ассету из библиотеки, который не принадлежит никакому пакету. При чем тут me.inpictures.data?
__________________
Reality.getBounds(this);

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Может все-таки так?
Код AS3:
_fontLibrary = event.target.applicationDomain.getDefinition("me.inpictures.data::FontEmbed")["Myriad2Pro"] as Class;
всё как и прежде
Цитата:
ArgumentError: Error #1508: Указано недопустимое значение для аргумента font.
at flash.text::Font$/registerFont()
at me.inpictures.data:ynamicFont/_loader_onComplete()
http://inpictures.me/app/font/MyriadPro.swf - для тестов.

Добавлено через 2 минуты
Цитата:
_fontLibrary = event.target.applicationDomain.getDefinition("FontEmbed_Myriad2Pro") as Class;
если не указывать пакет который указан как документ класс
Цитата:
ReferenceError: Error #1065: Переменная FontEmbed_Myriad2Pro не определена.
at flash.system::ApplicationDomain/getDefinition()
at me.inpictures.data:ynamicFont/_loader_onComplete()
Добавлено через 41 минуту
Пока что получилось сделать через фабрику на удалённом swf. Но всё же как зарегистрировать шрифт
__________________
return this...

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У меня локально работает и Ваш первый вариант, и мой первый. Так что проблема, видимо, в доменах.
Эту тему перечитывали?
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 16.10.2013 в 19:55.
Старый 16.10.2013, 22:27
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 5  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Да спасибо разобрался)
Что б я делал с шрифтами если бы не Wolsh, спасибо Вам
__________________
return this...

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Поделитесь решением со всеми и Вам тоже будет спасибо))
__________________
Reality.getBounds(this);

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Поделитесь решением со всеми и Вам тоже будет спасибо))
Собственно вот более детальное описание
__________________
return this...

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

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

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


 


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


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