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

📄 gradientbevel.as

📁 flash as编程的库和源代码
💻 AS
字号:
package de.alex_uhlmann.animationpackage.animation {import de.alex_uhlmann.animationpackage.animation.IMultiAnimatable;import de.alex_uhlmann.animationpackage.utility.Animator;import de.alex_uhlmann.animationpackage.animation.Filter;import flash.filters.BitmapFilter;import flash.filters.GradientBevelFilter;public class GradientBevel extends Filter implements IMultiAnimatable {	public var filter:GradientBevelFilter;	private var m_colors:Array = [0xFFFFFF, 0x000000, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF];	private var m_alphas:Array = [0, 100, 0, 100, 0];	private var m_ratios:Array = [0, 64, 128, 192, 255];	private var m_quality:Number = 1;	private var m_type:String = "inner";	private var m_knockout:Boolean = false;	public function GradientBevel(...arguments:Array) {		if(arguments[0] is Array) {			this.mcs = arguments[0];		} else {			this.mc = arguments[0];		}		arguments.shift();		this.init.apply(this, arguments);	}		public function run(...arguments:Array):void {				this.init.apply(this, arguments);		this.invokeAnimation(0, 100);	}	public function animate(start:Number, end:Number):void {				this.invokeAnimation(start, end);	}		public function setCurrentPercentage(percentage:Number):void {		this.invokeAnimation(percentage, NaN);	}		override public function setStartValues(startValues:Array, optional:Boolean = false):Boolean {		this.hasStartValues = optional ? false : true;				if(startValues[0] == null) {			startValues[0] = createEmptyFilter();		}		if(startValues[0] is GradientBevelFilter) {						var filter:GradientBevelFilter = startValues[0];						if(this.hasStartValues) {				this.setNonAnimatedProperties(filter);			}						return super.setStartValues([filter.distance, filter.angle, 										filter.blurX, filter.blurY, 										filter.strength], optional);					} else {			return super.setStartValues(startValues, optional);		}	}		override public function setEndValues(endValues:Array):Boolean {				if(endValues[0] == null) {			endValues[0] = createEmptyFilter();		}		if(endValues[0] is GradientBevelFilter) {						var filter:GradientBevelFilter = endValues[0];			this.setNonAnimatedProperties(filter);						return super.setEndValues([filter.distance, filter.angle, 										filter.blurX, filter.blurY, 										filter.strength]);				} else {			return super.setEndValues(endValues);		}	}		private function init(...arguments:Array):void {		if(isNaN(arguments[0])) {			arguments.unshift(null);		}		if(arguments[1] is Array) {			var values:Array = arguments[1];			var endValues:Array = values.slice(-1);			arguments.splice(1, 1, endValues[0]);			this.initAnimation.apply(this, arguments);			this.setStartValues([values[0]]);		} else {			this.initAnimation.apply(this, arguments);		}	}		private function initAnimation(...arguments:Array):void {		if(arguments.length > 2) {			this.animationStyle(arguments[2], arguments[3]);		} else {						this.animationStyle(this.duration, this.easing);		}					this.initializeFilter(arguments[0], arguments[1]);				this.setStartValues([this.filter], true);		this.setEndValues([arguments[1]]);	}		private function invokeAnimation(start:Number, end:Number):void {				this.myAnimator = new Animator();		this.myAnimator.caller = this;		this.myAnimator.end = this.getEndValues();		if(this.mc != null) {			this.initSingleMC();					} else {						this.initMultiMC();					}				if(!isNaN(end)) {			this.myAnimator.animationStyle(this.duration, this.easing);			this.myAnimator.animate(start, end);		} else {			this.myAnimator.setCurrentPercentage(start);		}		this.startInitialized = false;	}			private function initializeFilter(filterIndex:Number, filterEnd:GradientBevelFilter):void {				if(this.mc != null) {							if(isNaN(filterIndex)) {												this.filter = this.createEmptyFilter();				this.addFilter(this.filter);							} else {											//if no filter of correct type is found at filterIndex, 				//a new filter will be created.				this.modifyOrCreateFilter(filterIndex);			}					} else {						this.filterIndex = filterIndex;			this.filter = filterEnd;					}	}		private function modifyOrCreateFilter(filterIndex:Number):void {				this.filter = GradientBevelFilter(this.findFilter(filterIndex));		this.filters = this.mc.filters;		this.filterIndex = filterIndex;	}	private function isFilterOfCorrectType(filter:BitmapFilter):Boolean {		return (filter is GradientBevelFilter == true);	}		private function findFilter(filterIndex:Number):BitmapFilter {		var filter:BitmapFilter = this.mc.filters[filterIndex];				var isOfCorrectType:Boolean = this.isFilterOfCorrectType(filter);				if(!isOfCorrectType && filter != null) {			this.warnOfFilterOverwrite(filterIndex);		}				if(filter == null || !isOfCorrectType) {			filter = this.createEmptyFilter();		}		return filter;	}		private function createEmptyFilter():GradientBevelFilter {		var filter:GradientBevelFilter = new GradientBevelFilter();		filter.distance = 0;		filter.angle = 0;		filter.blurX = 0;		filter.blurY = 0;		filter.strength = 0;		return filter;	}		private function initSingleMC():void {		this.myAnimator.start = this.getStartValues();				if(this.getOptimizationMode() 			&& this.myAnimator.hasEquivalents()) {							this.myAnimator.setter = [[this,"setDistance"],								[this,"setAngle"],								[this,"setBlurX"],								[this,"setBlurY"],								[this,"setStrength"]];									} else {							this.myAnimator.setter = [[this,"setGradientBevel"]];			}	}		private function initMultiMC():void {		var myInstances:Array = [];					var len:Number = this.mcs.length;		var mcs:Array = this.mcs;		var i:Number = len;		while(--i>-1) {			myInstances[i] = new GradientBevel(mcs[i],this.filterIndex,this.filter);						var filter:GradientBevelFilter = this.updateFilter(createEmptyFilter());			myInstances[i].setNonAnimatedProperties(filter);		}		this.myInstances = myInstances;		this.myAnimator.multiStart = ["getMultiDistanceValue","getMultiAngleValue",									"getMultiBlurXValue","getMultiBlurYValue",									"getMultiStrengthValue"];											this.myAnimator.multiSetter = [[this.myInstances,"setDistance"],									[this.myInstances,"setAngle"],									[this.myInstances,"setBlurX"],									[this.myInstances,"setBlurY"],									[this.myInstances,"setStrength"]];		}		private function updateFilter(filter:GradientBevelFilter):GradientBevelFilter {				filter.colors = this.m_colors;		filter.alphas = this.m_alphas;		filter.ratios = this.m_ratios;		filter.quality = this.m_quality;		filter.type = this.m_type;		filter.knockout = this.m_knockout;			return filter;	}		private function updateProperties(filter:BitmapFilter):void {		this.filter = updateFilter(GradientBevelFilter(filter));		this.setStartValues([this.filter], true);			}	private function setNonAnimatedProperties(filter:GradientBevelFilter):void {		this.colors = filter.colors;		this.alphas = filter.alphas;		this.ratios = filter.ratios;		this.quality = filter.quality;		this.type = filter.type;		this.knockout = filter.knockout;			}			public function getMultiDistanceValue():Number {		return this.filter.distance;	}			public function getMultiAngleValue():Number {		return this.filter.angle;	}		public function getMultiBlurXValue():Number {		return this.filter.blurX;	}		public function getMultiBlurYValue():Number {		return this.filter.blurY;	}		public function getMultiStrengthValue():Number {		return this.filter.strength;	}				public function setGradientBevel(distance:Number, angle:Number, 							blurX:Number, blurY:Number, 							strength:Number):void {		this.filter.distance = distance;		this.filter.angle = angle;		this.filter.blurX = blurX;		this.filter.blurY = blurY;		this.filter.strength = strength;		this.filters[this.filterIndex] = this.filter;		this.mc.filters = this.filters;	}	public function setDistance(distance:Number):void {				this.filter.distance = distance;				this.filters[this.filterIndex] = this.filter;		this.mc.filters = this.filters;	}		public function setAngle(angle:Number):void {				this.filter.angle = angle;		this.filters[this.filterIndex] = this.filter;		this.mc.filters = this.filters;	}		public function setBlurX(blurX:Number):void {				this.filter.blurX = blurX;		this.filters[this.filterIndex] = this.filter;		this.mc.filters = this.filters;	}		public function setBlurY(blurY:Number):void {				this.filter.blurY = blurY;				this.filters[this.filterIndex] = this.filter;		this.mc.filters = this.filters;	}		public function setStrength(strength:Number):void {				this.filter.strength = strength;				this.filters[this.filterIndex] = this.filter;		this.mc.filters = this.filters;	}		public function get colors():Array {		return this.m_colors;	}		public function set colors(colors:Array):void {		this.filter.colors = colors;		this.m_colors = colors;	}		public function get alphas():Array {		return this.m_alphas;	}		public function set alphas(alphas:Array):void {		this.filter.alphas = alphas;		this.m_alphas = alphas;	}		public function get ratios():Array {		return this.m_ratios;	}		public function set ratios(ratios:Array):void {		this.filter.ratios = ratios;		this.m_ratios = ratios;	}			public function get quality():Number {		return this.m_quality;	}		public function set quality(quality:Number):void {		this.filter.quality = quality;		this.m_quality = quality;	}		public function get type():String {		return this.m_type;	}		public function set type(type:String):void {		this.filter.type = type;		this.m_type = type;	}		public function get knockout():Boolean {		return this.m_knockout;	}		public function set knockout(knockout:Boolean):void {		this.filter.knockout = knockout;		this.m_knockout = knockout;	}}}

⌨️ 快捷键说明

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