Показать сообщение отдельно
Старый 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.