⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 slidingbox.as

📁 QS我也没用过
💻 AS
字号:
package qs.controls
{
	import mx.containers.HBox;
	import mx.controls.LinkButton;
	import mx.controls.Button;
	import flash.events.MouseEvent;
	import flash.events.Event;
	import mx.effects.AnimateProperty;

	[DefaultProperty("children")]
	public class SlidingBox extends HBox
	{
		private var _childrenDirty:Boolean = false;
		private var _children:Array = [];
		private var _leftArrows:Array = [];
		private var _rightArrows:Array = [];
		
		public function SlidingBox():void
		{
			super();
			minWidth = 1;
			verticalScrollPolicy = "off";
		}
		
		public function set children(values:Array):void
		{
			_children = values;
			_childrenDirty = true;
			invalidateProperties();
		}
		public function get children():Array
		{
			return _children;
		}
		
		override protected function commitProperties():void
		{
			var button:LinkButton;
			super.commitProperties();
			
			if(_childrenDirty)
			{
				for(var i:int = 0;i<_children.length;i++)
				{
					addChildAt(_children[i],i*3);
					if(i < _children.length-1)
					{
						if(i >= _leftArrows.length)
						{
							button = new LinkButton();
							_leftArrows.push(button);
							button.label = "<";					
							button.addEventListener(MouseEvent.CLICK,scrollBackHandler);
						}
						else
						{
							button = _leftArrows[i];
						}
						addChildAt(button,i*3+1);
						if(i >= _rightArrows.length)
						{
							button = new LinkButton();
							_rightArrows.push(button);
							button.addEventListener(MouseEvent.CLICK,scrollForwardHandler);
							button.label = ">";
						}
						else
						{
							button = _rightArrows[i];
						}					
						addChildAt(button,i*3+2);
					}
				}			
				while(numChildren>_children.length*2-2)
					removeChildAt(numChildren-1);
			}
		}

		private function scrollBackHandler(e:Event):void
		{
			for(var i:int = _children.length-1;i>=0;i--)
			{
				if(_children[i].x < horizontalScrollPosition)
				{
					scrollTo(_children[i].x);
					break;
				}
			}
		}
		private function scrollForwardHandler(e:Event):void
		{
			for(var i:int = 0; i <_children.length;i++)
			{
				if(_children[i].x > horizontalScrollPosition)
				{
					scrollTo(_children[i].x);
					break;
				}
			}
		}		
		private function scrollTo(value:Number):void
		{
			var e:AnimateProperty = new AnimateProperty(this);
			e.property = "horizontalScrollPosition";
			e.fromValue = horizontalScrollPosition;
			e.toValue = value;
			e.duration = 1000;
			e.play();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -