|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
Embed шрифта в часто используемом классе
Вот если у меня есть клас в который я передаю строку и координаты расположения, а он создаёт текст и я часто использую этот класс в проекте, но в этом классе есть Embed шрифта, это значит - когда я создаю новый экземпляр то текст опять встраивается во флешку? Каким способом этого лучше избежать? Может какой нибудь паттерн, например одиночка может спасти или кто как делает?
|
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
пробовал так, вот например класс с форматами, пусть там пока один:
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; } } } почему имя класса встроеного шрифта присоединяется к классу в который встраиваю? |
|
|||||
[+4 06.05.14]
|
[Embed(source="../someFont.ttf", fontName = "myFont", mimeType = "application/x-font", fontWeight="normal", fontStyle="normal", unicodeRange="englishRange", advancedAntiAliasing="true", embedAsCFF="false")] private var myEmbeddedFont:Class; Покажите что вы делаете. Пока я вижу только начинку класса. этого мало. И уберите формат пока что. Шаред только для встройки стоит делать , понятнее будет и вам
__________________
Марк Tween |
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
Так всё заработало, класс текста который использовал был унаследован от TextField, унаследовал от Sprite и всё пошло. Не знаю хороший ли выход? Просто нужен класс который можно использовать так
var form:SharedFonts = new SharedFonts(); var text:Text = new Text("мой текст...", form.format01()); text.textPosition(20, 200); objMenu.addChild(text); 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; } } } |
|
|||||
[+4 06.05.14]
|
Ну блин же, не так это делается а вот так
class SharedFonts ( начинка только эмбед, и ни от чего не расширяем. В main чтобы классс вкомпилися пишем просто SharedFonts; ВСЕ круто ) class DisplayText(...rest) форматы и прочее + создание текстовых поле, статичный класс. private var _textField:TextField = DisplayText.addField('sharedFontName',14,'left'); addChild(_textField)
__________________
Марк Tween |
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
а DisplayText это что за класс? Расширенный TextField?
|
|
|||||
[+4 06.05.14]
|
Нет. просто приватные поля. Не расширяется ни от чего
Добавлено через 1 минуту 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 |
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
А это, объект с текстфилдами, хорошо, нужно попробовать, спасибо!
|
Часовой пояс GMT +4, время: 18:12. |
|
« Предыдущая тема | Следующая тема » |
|
|