![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2012
Сообщений: 142
|
Как применить загруженый шрифт по всему swf? Не к отдельному TF а ко всем?
Последний раз редактировалось mooncar; 03.11.2012 в 13:13. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Пройтись по всем TF и применить к каждому отдельно... Есть другие варианты?
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jun 2012
Сообщений: 142
|
имхо бредовый способ, а если у меня 100500 тф?
|
|
|||||
|
Был бы флекс, задача бы решилась 2мя строками кода, а так, я думаю также - пройтись по всем текстфилдам
Ну или Observer + интерфейс с методом смены шрифта, но по сути, это все равно что проходить по всем текстфилдам, только девелоуперу удобнее Observer package classes.managers { import classes.interfaces.IFontChangable; public class ObserverManager { protected static var instance:ObserverManager; protected static var _items:Vector.<IFontChangable>=new Vector.<IFontChangable>(); public static function getInstance():ObserverManager { if(!instance) { instance=new ObserverManager(); } return instance; } public function subscribe(value:IFontChangable):void { _items.push(value); } public function notifyFontChanged(fontName:String):void { var i:int; var total:int=_items.length; for(i=0;i<total;i++) { _items[i].changeFont(fontName); } } } } package classes.interfaces { public interface IFontChangable { function changeFont(fontName:String):void; } } package classes.components { import classes.interfaces.IFontChangable; import flash.events.Event; import flash.text.TextField; import flash.text.TextFormat; public class CustomTextField extends TextField implements IFontChangable { public function CustomTextField() { super(); } public function changeFont(fontName:String):void { var tf:TextFormat=new TextFormat(fontName); super.setTextFormat(tf); } } } var customTextField:CustomTextField; var i:int; var total:int=15; for(i=0;i<total;i++) { customTextField=new CustomTextField(); someContainer.addChild(customTextField); ObserverManager.getInstance().subscribe(customTextField); } ObserverManager.getInstance().notifyFontChanged("some font name"); Последний раз редактировалось djyamato; 04.11.2012 в 15:27. |
|
|||||
|
Цитата:
Самый надёжный способ - копипаста вызова функции применения формата по всем кускам кода, чем чего-то там циклом рекурсивно делать Это, конечно, если весь код в руках автора. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Зачем сразу рекурсивно.. создать свой классик для текста
TextKit.as package { import flash.text.TextField; import flash.text.TextFormat; /** * ... * @author wolsh */ public class TextKit extends TextField { private static var _fields:Vector.<TextField> = new Vector.<TextField>(); public function TextKit() { super(); _fields.push(this); } public static function setFont(fontName:String):void { for each(var txt:TextField in _fields) { var format:TextFormat = txt.defaultTextFormat; format.font = fontName; txt.defaultTextFormat = format; txt.setTextFormat(format); } } } } package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextFormat; /** * ... * @author wolsh */ public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point for (var i:uint = 0; i < 10; i++) { var txt:TextKit = new TextKit(); txt.defaultTextFormat = new TextFormat("Arial", 21, 0x669966); txt.text = "Text # " + i.toString(); super.addChild(txt); txt.x = i * 80; txt.y = 100; } stage.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(event:MouseEvent):void { TextKit.setFont("Courier New"); } } }
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jun 2012
Сообщений: 142
|
Мне надо было с двумя разными шрифтами работать.
зафигачил "найти и заменить" к половине ТФов) Всем спс. |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:18. |
|
|
« Предыдущая тема | Следующая тема » |
|
|