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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так... определитесь, в первом посте был простой хайдер – нажал-открылся, нажал-закрылся.
Сейчас Вы говорите о закрытии при нажатии на ДРУГОЙ блок. А это уже не хайдер, а что-то типа Аккордеона. Уточните ТЗ))

Добавлено через 7 минут
Main.as
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.text.TextFormat;
	import Hider;
/* * * * * * * * * *
*                  *
*  @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);
			stage.align = StageAlign.TOP_LEFT;
            stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.showDefaultContextMenu = false;
			// entry point
			var s:String = "Мне надо сделать так что бы я мог информацию в виде текста помещать в блок ( ну так называемый квадрат просто ) и что бы этот блок раскрывался и складывался показывая тем самым всю и лишь часть информации!";
			var hider1:Hider = new Hider(150, 50, 250, s, new TextFormat("Arial", 12, 0x666666));
			addChild(hider1);
			hider1.x = 100;
			hider1.y = 100;
		}
 
	}
 
}
Hider.as
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Rectangle;
	import flash.text.TextField;
	import flash.text.TextFormat;
 
/* * * * * * * * * *
*                  *
*  @author wolsh   *
*                  *
\* * * * * * * * * */ 
	public class Hider extends Sprite
	{
		private var _text		:String;
		private var _format		:TextFormat;
		private var _txf		:TextField;
		private var _width		:Number;
		private var _minHeight	:Number;
		private var _maxHeight	:Number;
		private var _hided		:Boolean = true;
 
		public function Hider(width:Number, minHeight:Number, maxHeight:Number, text:String, format:TextFormat) 
		{
			_maxHeight = maxHeight;
			_minHeight = minHeight;
			_width = width;
			_format = format;
			_text = text;
			if (stage)
			{
				init();
			}
			else 
			{
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}
 
		private function init(event:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// создаем текстовое поле для контента.
			_txf = new TextField();
			_txf.defaultTextFormat = _format;
			_txf.multiline = true;
			_txf.wordWrap = true;
			_txf.mouseEnabled = false;
			_txf.width = _width - 20;
			_txf.x = 10;
			_txf.htmlText = _text;
			_txf.height = Math.min(_maxHeight, _txf.textHeight + 4);
			addChild(_txf);
			// рисуем фончик, он нужен также для реакции на клик. Можно сделать его прозрачным, задав не 1 а 0 вторым параметром beginFill().
			this.graphics.beginFill(0xEEEEEE, 1);
			this.graphics.drawRect(0, 0, _width, this.height);
			this.scrollRect = new Rectangle(0, 0, _width, _minHeight);
			// начинаем слушать клик
			this.addEventListener(MouseEvent.CLICK, clickHandler);
		}
 
		private function clickHandler(event:MouseEvent):void 
		{
			// меняем режим.
			_hided = !_hided;
			if (_hided)
			{
				// если скрытый - задаем прямоугольник отображения с минимальной высотой, иначе - с максимальной.
				this.scrollRect = new Rectangle(0, 0, _width, _minHeight);
			}
			else this.scrollRect = new Rectangle(0, 0, _width, _maxHeight);
		}
	}
 
}
__________________
Reality.getBounds(this);