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

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

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

Регистрация: Jun 2012
Сообщений: 142
По умолчанию Как применить загруженый шрифт по всему swf?

Как применить загруженый шрифт по всему swf? Не к отдельному TF а ко всем?


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

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

Старый 03.11.2012, 14:11
fduch вне форума Посмотреть профиль Отправить личное сообщение для fduch Найти все сообщения от fduch
  № 3  
Ответить с цитированием
fduch

Регистрация: Jun 2012
Сообщений: 142
имхо бредовый способ, а если у меня 100500 тф?

Старый 03.11.2012, 14:16
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Цитата:
Сообщение от fduch Посмотреть сообщение
а если у меня 100500 тф?
Значит нужно пройтись по 100500 полям.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 03.11.2012, 19:08
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 5  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Был бы флекс, задача бы решилась 2мя строками кода, а так, я думаю также - пройтись по всем текстфилдам
Ну или Observer + интерфейс с методом смены шрифта, но по сути, это все равно что проходить по всем текстфилдам, только девелоуперу удобнее

Observer
Код AS3:
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);
			}
		}
	}
}
interface
Код AS3:
package classes.interfaces
{
	public interface IFontChangable
	{
		function changeFont(fontName:String):void;
	}
}
потомок текстфилда
Код AS3:
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);
		}
	}
}
использование
Код AS3:
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.
Старый 03.11.2012, 21:33
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 6  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Пройтись по всем TF
Наверняка у автора найдется пара из всех, которым надо другой формат

Самый надёжный способ - копипаста вызова функции применения формата по всем кускам кода, чем чего-то там циклом рекурсивно делать
Это, конечно, если весь код в руках автора.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Зачем сразу рекурсивно.. создать свой классик для текста
TextKit.as
Код AS3:
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);
			}
		}
	}
}
Main.as
Код AS3:
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");
		}
	}
}
Кликаем:
AutoFormattingInstances.swf   (1.6 Кб)
Вложения
Тип файла: swf AutoFormattingInstances.swf (1.6 Кб, 94 просмотров)
__________________
Reality.getBounds(this);

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

Регистрация: Jun 2012
Сообщений: 142
Мне надо было с двумя разными шрифтами работать.
зафигачил "найти и заменить" к половине ТФов)
Всем спс.

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

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

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


 


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


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