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

📄 animatedbox.as

📁 QS我也没用过
💻 AS
字号:
package qs.containers
{
	import mx.containers.Box;
	import qs.controls.LayoutAnimator;
	import qs.controls.LayoutTarget;
	import mx.core.UIComponent;
	import mx.core.ScrollPolicy;
	import mx.events.ChildExistenceChangedEvent;
	import flash.utils.Dictionary;
	public class AnimatedBox extends Box implements IAnimatingContainer
	{
		private var animator:LayoutAnimator = new LayoutAnimator();
		
		public function AnimatedBox()
		{
			super();
			animator.updateFunction = animationUpdated;
			horizontalScrollPolicy = ScrollPolicy.OFF;
			verticalScrollPolicy = ScrollPolicy.OFF;
		}
		private function animationUpdated():void
		{
			validateDisplayList();
		}
		
		public var animationPolicy:String = "always";

		public function get animating():Boolean
		{
			return _animationPending || animator.animating;		
		}
		
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			var runAnimation:Boolean = _animationPending;
			
			if(runAnimation || animating)
			{			
				for(var i:int=0;i<numChildren;i++)
				{
					var target:LayoutTarget = animator.targetFor(UIComponent(getChildAt(i)));
					target.capture();
				}
			}
			
			super.updateDisplayList(unscaledWidth,unscaledHeight);
			
			if(runAnimation || animating)
			{			

				var targets:Dictionary = animator.targets;
				for(var aChild:* in targets)
				{
					if(aChild.parent != this)
						animator.releaseTarget(aChild);
				}
																					
				for(var i:int=0;i<numChildren;i++)
				{
					var target:LayoutTarget = animator.targetFor(UIComponent(getChildAt(i)));
					target.release();
				}

				animator.layout(false);							
				_animationPending = false;
			}
			
						
		}
		
	    override public function setActualSize(w:Number, h:Number):void
	    {
	    	_preventAnimation = (parent is IAnimatingContainer && IAnimatingContainer(parent).animating == true);
	    	super.setActualSize(w,h);
	    	_preventAnimation = false;	    	    	
	    }
	    private var _preventAnimation:Boolean = false;
	    private var _animationPending:Boolean = false;
	    
	    override public function invalidateDisplayList():void
	    {
			if(animator.animating ||
				 animationPolicy == AnimationPolicy.ALWAYS ||
				(animationPolicy == AnimationPolicy.AUTO && _preventAnimation == false))
				{
					_animationPending = true;
				}
			super.invalidateDisplayList();
	    }
				
	    	    
	}
}

⌨️ 快捷键说明

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