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

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

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

Регистрация: Jul 2008
Сообщений: 912
По умолчанию Embed шрифта в часто используемом классе

Вот если у меня есть клас в который я передаю строку и координаты расположения, а он создаёт текст и я часто использую этот класс в проекте, но в этом классе есть Embed шрифта, это значит - когда я создаю новый экземпляр то текст опять встраивается во флешку? Каким способом этого лучше избежать? Может какой нибудь паттерн, например одиночка может спасти или кто как делает?

Старый 01.06.2012, 17:21
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
А зачем каждый раз в классе генерить шрифт? Когда достаточно создать какой нить SharedFonts классю В него вписать ВСЕ ембеды, а в мейне написать SharedFonts; и все?
__________________
Марк Tween

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

Регистрация: Jul 2008
Сообщений: 912
пробовал так, вот например класс с форматами, пусть там пока один:
Код AS3:
package src.control{
	import flash.text.TextFormat;
 
	/**
	 * ...
	 * @author Sintesis
	 */
	public class SharedFonts {
 
		[Embed(source = "Arial_Narrow.ttf", fontName = "Arial Narrow", embedAsCFF="false", fontStyle="smooth", mimeType = "application/x-font")]
		private var ArialNarrow:Class;
 
		public function SharedFonts() {
 
		}
 
		public function getFormat01():TextFormat {
 
			var format01:TextFormat = new TextFormat();
            format01.color = 0xffffff;
            format01.size = 16;
            format01.font = "Arial Narrow";
			return format01;
		}
	}
}
но при его вызове вылетает ошибка Ambiguous reference to SharedFonts_ArialNarrow.
почему имя класса встроеного шрифта присоединяется к классу в который встраиваю?

Старый 01.06.2012, 17:57
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
[Embed(source="../someFont.ttf", 
    fontName = "myFont", 
    mimeType = "application/x-font", 
    fontWeight="normal", 
    fontStyle="normal", 
    unicodeRange="englishRange", 
    advancedAntiAliasing="true", 
    embedAsCFF="false")]
private var myEmbeddedFont:Class;
Добавлено через 1 минуту
Покажите что вы делаете. Пока я вижу только начинку класса. этого мало. И уберите формат пока что. Шаред только для встройки стоит делать , понятнее будет и вам
__________________
Марк Tween

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

Регистрация: Jul 2008
Сообщений: 912
Так всё заработало, класс текста который использовал был унаследован от TextField, унаследовал от Sprite и всё пошло. Не знаю хороший ли выход? Просто нужен класс который можно использовать так
Код AS3:
var form:SharedFonts = new SharedFonts();
			var text:Text = new Text("мой текст...", form.format01());
			text.textPosition(20, 200);
			objMenu.addChild(text);
вот он работает:
Код AS3:
package src.control{
	import flash.display.Sprite;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
 
 
	public class Text extends Sprite {
 
 
 
		private var menuText:TextField;
 
		public function Text(_text:String, _format:TextFormat) {
 
			menuText = new TextField();
			menuText.autoSize = TextFieldAutoSize.LEFT;
			menuText.defaultTextFormat = _format;
			menuText.embedFonts = true;
            menuText.selectable = false;
			menuText.text = _text;
			addChild(menuText);
		}
 
		public function textPosition(_textX:Number, _textY:Number):void {
 
			menuText.x = _textX;
			menuText.y = _textY;
		}
	}
}
Но хотелось, что-б он был унаследован не от Спрайт, а от ТекстФтлд например(

Старый 01.06.2012, 18:33
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 6  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну блин же, не так это делается а вот так

Код AS3:
class SharedFonts ( начинка только эмбед, и ни от чего не расширяем. В main чтобы классс вкомпилися пишем просто SharedFonts; ВСЕ круто )
class DisplayText(...rest) форматы и прочее + создание текстовых поле, статичный класс.
 
private var _textField:TextField = DisplayText.addField('sharedFontName',14,'left');
addChild(_textField)
__________________
Марк Tween

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

Регистрация: Jul 2008
Сообщений: 912
а DisplayText это что за класс? Расширенный TextField?

Старый 01.06.2012, 18:49
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Нет. просто приватные поля. Не расширяется ни от чего

Добавлено через 1 минуту
Код AS3:
package com.in4core.text 
{
	import flash.text.TextField;
	import flash.text.TextFormat;
	/**
	 * ...
	 * @author in4core
	 */
	public class DisplayText extends Object 
	{
		private static var _textfield:TextField;
 
 
		public static function addField ( font:String = null , size:uint = 12, bitmapFonts:Boolean = false, 
 
		autosize:String = 'left', isMulti:Boolean = false, text:String = '' ) : TextField
 
		{
			_textfield = null;
 
			_textfield = new TextField();
 
			_textfield.defaultTextFormat = setFormat(size, font);
 
			_textfield.autoSize = autosize;
 
			_textfield.text = text;
 
			if (isMulti) _textfield.multiline = true;
 
			_textfield.selectable = false;
 
			if (!bitmapFonts) _textfield.antiAliasType = 'advanced';
 
			if (font != null) _textfield.embedFonts = true;
			else font = '_sans';
 
			return _textfield;
		}
 
		private static function setFormat( size:uint, font:String ):TextFormat {
 
			var tf:TextFormat = new TextFormat();
 
			tf.size = size;
 
			tf.font = font;
 
			return tf;
		}
 
	}
 
}
__________________
Марк Tween

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

Регистрация: Jul 2008
Сообщений: 912
А это, объект с текстфилдами, хорошо, нужно попробовать, спасибо!

Старый 01.06.2012, 19:04
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну объект это так чисто для красоты. Любой класс он же от объекта наследуется по факту, поэтому я иногда пишу, а так можно было бы и без всего писать разницы никакой
__________________
Марк Tween

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

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

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


 


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


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