Показать сообщение отдельно
Старый 27.07.2012, 14:30
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flashx.textLayout.container.ContainerController;
	import flashx.textLayout.edit.SelectionFormat;
	import flashx.textLayout.edit.SelectionManager;
	import flashx.textLayout.elements.ParagraphElement;
	import flashx.textLayout.elements.SpanElement;
	import flashx.textLayout.elements.TextFlow;
	import flashx.textLayout.events.SelectionEvent;
	import flashx.textLayout.formats.TextLayoutFormat;
 
	/**
	 * ...
	 * @author wolsh
	 */
	public class Main extends Sprite 
	{
		//// Цвет и непрозрачность закрашивания полосы "подсветки" при выделении
		private var _selectionColorFocusOn:uint = 0xDD2222; //Different color is 0x4fe4e4
		private var _selectionColorFocusOff:uint = 0xDDDD00;
		private var _selectionAlpha:Number = 1;
 
		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);
 
			//// отображаемый контейнер текста
			var textContainer:Sprite = new Sprite(); 
			this.addChild(textContainer); 
			textContainer.x = 100;
			textContainer.y = 100;
 
			//// Стиль для выделения (в фокусе)
			var colorOn:uint = getDifferentColor(_selectionColorFocusOn);
			var selectionStyleFocusOn:SelectionFormat = new SelectionFormat(colorOn, _selectionAlpha);
 
			//// Стиль для выделения (без фокуса)
			var colorOff:uint = getDifferentColor(_selectionColorFocusOff);
			var selectionStyleFocusOff:SelectionFormat = new SelectionFormat(colorOff, _selectionAlpha);
 
			//// Менеджер стилей для выделения
			var selectionManager:SelectionManager = new SelectionManager();
 
			//// Устанавливаем стиль для выделения в фокусе
			selectionManager.focusedSelectionFormat = selectionStyleFocusOn;
			selectionManager.unfocusedSelectionFormat = selectionStyleFocusOff;
			//// Text Font settings
			var textFormat:TextLayoutFormat = new TextLayoutFormat(); 
			textFormat.fontFamily = "Arial";
			textFormat.fontSize = 14;
 
			//// Контроллер для управления отображением нашего текста
			var textController:ContainerController = new ContainerController(textContainer); 
 
			//// Устанавливаем формат текста
			textController.format = textFormat; 
 
			//// Устанавливаем размеры текстового блока
			textController.setCompositionSize(1000, 40);
 
			//// строчный элемент
			var textSpan:SpanElement = new SpanElement();
			textSpan.text = "Вот какой-то текст, который будем выделять.";
 
			//// блок текста, содержащий наш строчный элемент
			var textParagraph:ParagraphElement = new ParagraphElement();
			textParagraph.addChild(textSpan);
 
			//// Главный управляющий элемент))
			var textFlow:TextFlow = new TextFlow();
			textFlow.addChild(textParagraph);
 
			//// Устанавливаем управляющего выделением
			textFlow.interactionManager = selectionManager;
 
			//// Добавляем управляющего нашим текстом
			textFlow.flowComposer.addController(textController); 
 
			//// Запускаем обновление отображения
			textFlow.flowComposer.updateAllControllers(); 
 
			//// Подписываемся на собтие выделения
			textFlow.addEventListener(SelectionEvent.SELECTION_CHANGE, handlerSelection);
		}
 
		private function getDifferentColor(selectionColor:uint):uint 
		{
			var r:uint = 0xFF - (selectionColor >> 16);
			var g:uint = 0xFF - (selectionColor >> 8) & 0xFF;
			var b:uint = 0xFF - selectionColor & 0xFF;
			var rgb:uint = (r << 16) + (g << 8) + b;
			return rgb;
		}
 
		private function handlerSelection(event:SelectionEvent):void 
		{
			var selectionBegin:int = event.selectionState.absoluteStart;
			var selectionEnd:int = event.selectionState.absoluteEnd;
 
			trace(event.selectionState.textFlow.getText(selectionBegin, selectionEnd))
		}
 
	}
 
}
Вложения
Тип файла: zip SelectionColor.zip (352.9 Кб, 78 просмотров)
__________________
Reality.getBounds(this);