亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? supershape.as

?? flash as編程的庫和源代碼
?? AS
字號:
?package de.alex_uhlmann.animationpackage.drawing {	import de.alex_uhlmann.animationpackage.animation.ISingleAnimatable;import de.alex_uhlmann.animationpackage.animation.IMultiAnimatable;import de.alex_uhlmann.animationpackage.drawing.Shape;import de.alex_uhlmann.animationpackage.utility.Animator;import flash.display.Sprite;public class SuperShape	extends Shape implements ISingleAnimatable, IMultiAnimatable {	public static var m_def:Number = 4;	public static var n1_def:Number = 1;	public static var n2_def:Number = 1;	public static var n3_def:Number = 1;	public static var range_def:Number = 12;	public static var scaling_def:Number = 200;	public static var detail_def:Number = 10000;	private var x:Number = 0;	private var y:Number = 0;	private var m_m:Number;	private var m_n1:Number;	private var m_n2:Number;	private var m_n3:Number;	private var m_range:Number;	private var m_scaling:Number;	private var m_detail:Number;	private var presets:Object;	private var forward:Boolean = true;	private var redrawBool:Boolean = true;	private var counter:Number;	private var counterMax:Number;	private var multipleValues:Boolean = false;	/* if true, shape gets drawn from the center.*/	private var m_animateFromCenter:Boolean = false;	/*points already calculated by getPointsOnCurve*/	private var calculatedPoints:Array;	public function SuperShape(...arguments:Array) {		super();		this.init.apply(this,arguments);		this.fillStyle(NaN);	}	private function init(...arguments:Array):void {		if(arguments[0] is Sprite) {							this.initCustom.apply(this,arguments);		} else {						this.initAuto.apply(this,arguments);		}				}		private function initCustom(...arguments:Array):void {		this.mc = this.createClip({mc:arguments[0], x:arguments[1], y:arguments[2]});		this.initShape.apply(this,arguments.slice(1));	}	private function initAuto(...arguments:Array):void {				this.mc = this.createClip({name:"apDraw",x:arguments[0], y:arguments[1]});		this.initShape.apply(this,arguments);	}	private function initShape(...arguments:Array):void {		this.initPresets();		this.initParams.apply(this,arguments.slice(2));	}	private function initPresets():void {		this.presets = new Object();		this.addPreset({label:"circle", data:{m:0, n1:1, n2:1, n3:1, range:2, scaling:2, detail:1000}});		this.addPreset({label:"square", data:{m:4, n1:1, n2:1, n3:1, range:2, scaling:2, detail:1000}});		this.addPreset({label:"triangle", data:{m:3, n1:1, n2:1, n3:1, range:2, scaling:2, detail:1000}});		this.addPreset({label:"burst", data:{m:5, n1:1, n2:1, n3:1, range:2, scaling:2, detail:1000}});		this.addPreset({label:"radioactive", data:{m:3, n1:10000, n2:9999, n3:9999, range:2, scaling:2, detail:1000}});		this.addPreset({label:"windmill", data:{m:15, n1:10000, n2:9000, n3:9000, range:2, scaling:2, detail:1000}});		this.addPreset({label:"drop", data:{m:1 / 6, n1:.3, n2:.3, n3:.3, range:12, scaling:2, detail:1000}});		this.addPreset({label:"star3peaks", data:{m:3, n1:.3, n2:.3, n3:.3, range:12, scaling:2, detail:1000}});		this.addPreset({label:"star4peaks", data:{m:4, n1:.3, n2:.3, n3:.3, range:12, scaling:2, detail:1000}});		this.addPreset({label:"star5peaks", data:{m:5, n1:.3, n2:.3, n3:.3, range:12, scaling:2, detail:1000}});	}	private function initParams(...arguments:Array):void {				this.m_m = (isNaN(arguments[0])) ? SuperShape.m_def : arguments[0];		this.m_n1 = (isNaN(arguments[1])) ? SuperShape.n1_def : arguments[1];		this.m_n2 = (isNaN(arguments[2])) ? SuperShape.n2_def : arguments[2];		this.m_n3 = (isNaN(arguments[3])) ? SuperShape.n3_def : arguments[3];		this.m_range = (isNaN(arguments[4])) ? SuperShape.range_def : arguments[4];		this.m_scaling = (isNaN(arguments[5])) ? SuperShape.scaling_def : arguments[5];		this.m_detail = (isNaN(arguments[6])) ? SuperShape.detail_def : arguments[6];	}					public function draw():void {		var start:Number = arguments[0];		var end:Number = arguments[1];		this.redrawBool = false;		if(isNaN(start) && isNaN(end)) {			start = 0;			end = 100;		}		var endDetail:Number = end / 100 * this.m_detail;		if(start > end) {			this.forward = false;		} else {			this.forward = true;		}		this.calculatedPoints = new Array();		this.drawNewShape(endDetail);	}		public function run(...arguments:Array):void {		this.init.apply(this, arguments);		this.invokeAnimation(0, 100);	}		/*	* redraws the shape in each iteration like every animated shape in AnimationPackage.	* Bounce, Elastic and Back Easing is possible. Due to the complex operations for the superformula	* this can be very slow.	*/	public function animate(start:Number, end:Number):void {		this.redrawBool = true;		this.invokeAnimation(start, end);	}		public function setCurrentPercentage(percentage:Number):void {		this.invokeAnimation(percentage, NaN);	}		public function animateProps(propArr:Array, endArr:Array):void {		this.calculatedPoints = new Array();		this.myAnimator = new Animator();		this.myAnimator.animationStyle(this.duration, this.easing);		this.myAnimator.caller = this;		var startArr:Array = new Array();		var setterArr:Array = new Array();		var i:Number = propArr.length;		while(--i>-1) {			startArr.push(this[propArr[i]]);			setterArr.push(new Array(this,"a_"+propArr[i]));		}		this.counter = 0;		this.counterMax = startArr.length;		if(this.counterMax > 1) {			this.multipleValues = true;			this.setStartValues(startArr);			this.setEndValues(endArr);		} else {			this.multipleValues = false;			this.setStartValue(startArr[0]);			this.setEndValue(endArr[0]);		}		this.myAnimator.start = startArr;		this.myAnimator.end = endArr;		this.myAnimator.setter = setterArr;		this.myAnimator.run();	}	public function a_m(v:Number):void {		this.m_m = v;		this.collect();	}	public function a_n1(v:Number):void {		this.m_n1 = v;		this.collect();	}	public function a_n2(v:Number):void {		this.m_n2 = v;		this.collect();	}	public function a_n3(v:Number):void {		this.m_n3 = v;		this.collect();	}	public function a_range(v:Number):void {		this.m_range = v;		this.collect();	}	public function a_scaling(v:Number):void {		this.m_scaling = v;		this.collect();	}	public function a_detail(v:Number):void {		this.m_detail = v;		this.collect();	}	private function collect():void {		this.counter++;		if(this.counter == this.counterMax) {			this.counter = 0;						this.drawNewShape(this.m_detail);		}	}		public function morph(presetStart:String, presetEnd:String):void {		this.calculatedPoints = new Array();		var p1:Object = this.presets[presetStart];		var p2:Object = this.presets[presetEnd];		this.initParams(p1.m, p1.n1, p1.n2, p1.n3, p1.range, p1.scaling, p1.detail);		this.myAnimator = new Animator();		this.myAnimator.animationStyle(this.duration, this.easing);		this.myAnimator.caller = this;		var startArr:Array = new Array();		var endArr:Array = new Array();		var setterArr:Array = new Array();		/*determine difference between preset shapes and animate with Animator.*/		if(p1.m != p2.m) {			startArr.push(p1.m);			endArr.push(p2.m);			setterArr.push(new Array(this,"a_m"));		}		if(p1.n1 != p2.n1) {			startArr.push(p1.n1);			endArr.push(p2.n1);			setterArr.push(new Array(this,"a_n1"));		}		if(p1.n2 != p2.n2) {			startArr.push(p1.n2);			endArr.push(p2.n2);			setterArr.push(new Array(this,"a_n2"));		}		if(p1.n3 != p2.n3) {			startArr.push(p1.n3);			endArr.push(p2.n3);			setterArr.push(new Array(this,"a_n3"));		}		if(p1.range != p2.range) {			startArr.push(p1.range);			endArr.push(p2.range);			setterArr.push([this,"a_range"]);		}		if(p1.scaling != p2.scaling) {			startArr.push(p1.scaling);			endArr.push(p2.scaling);			setterArr.push([this,"a_scaling"]);		}		if(p1.detail != p2.detail) {			startArr.push(p1.detail);			endArr.push(p2.detail);			setterArr.push([this,"a_detail"]);		}		this.counter = 0;		this.counterMax = startArr.length;		if(this.counterMax > 1) {			this.multipleValues = true;			this.setStartValues(startArr);			this.setEndValues(endArr);		} else {			this.multipleValues = false;			this.setStartValue(startArr[0]);			this.setEndValue(endArr[0]);		}		this.myAnimator.start = startArr;		this.myAnimator.end = endArr;		this.myAnimator.setter = setterArr;		this.myAnimator.run();	}	public function addPreset(item:Object):void {		if(this.presets[item.label] != null) {			trace("Preset "+this.presets[item.label]+" overwritten!");		}		this.presets[item.label] = item.data;	}	public function getPreset(preset:String):Object {		if(preset != null) {			return this.presets[preset];		}		return this.presets;	}	public function setPreset(preset:String):void {		var p:Object = this.presets[preset];		this.initParams(p.m, p.n1, p.n2, p.n3, p.range, p.scaling, p.detail);	}		private function invokeAnimation(start:Number, end:Number):void {		this.startInitialized = false;				this.calculatedPoints = new Array();		this.myAnimator = new Animator();		this.myAnimator.caller = this;		var startDetail:Number = 0;		this.myAnimator.start = [startDetail];		this.setStartValue(startDetail);		this.multipleValues = false;		var endDetail:Number = this.m_detail;		if(start > end) {			this.forward = false;		} else {			this.forward = true;		}		this.myAnimator.end = [endDetail];		this.setEndValue(endDetail);		this.myAnimator.setter = [[this,"drawNewShape"]];		if(!isNaN(end)) {			this.myAnimator.animationStyle(this.duration, this.easing);			this.myAnimator.animate(start, end);		} else {			this.myAnimator.setCurrentPercentage(start);		}	}		public function drawNewShape(s:Number):void {		this.clearDrawing();		if(!isNaN(this.fillRGB) && this.fillGradient == false) {				this.mc.graphics.beginFill(this.fillRGB, this.fillAlpha);		} else if (this.fillGradient == true){			this.mc.graphics.beginGradientFill(this.gradientFillType, 													this.gradientColors, 													this.gradientAlphas, 													this.gradientRatios, 													this.gradientMatrix,													this.gradientSpreadMethod,													this.gradientInterpolationMethod,													this.gradientFocalPointRatio);		}		this.drawShape(s);		this.mc.graphics.endFill();	}		/* Optimized, less readable code.*/	private function drawShape(s:Number):void {		var mc:Sprite = this.mc;		var m:Number = this.m_m;		var n1:Number = this.m_n1;		var n2:Number = this.m_n2;		var n3:Number = this.m_n3;		var ra:Number = this.m_range;		var sc:Number = this.m_scaling * 90;		var d:Number = this.m_detail;		if(isNaN(s)) {			s = d;		}		var phi:Number;		var pi:Number = Math.PI;		/*		* getPoint() variables. To improve performance, 		* the implementation of getPoint() is also included in drawShape, 		* saving another function call in loops.		*/		var r:Number;		var x:Number, y:Number;		var cos:Function = Math.cos;		var sin:Function = Math.sin;		var pow:Function = Math.pow;		var abs:Function = Math.abs;				var p:Number;		var q:Object;		//cache		var calc:Array = this.calculatedPoints;		/*calculate starting point if not animated from center*/						if(this.animateFromCenter == false) {						var pos1:Object = this.getPoint(m, n1, n2, n3, 0);			mc.graphics.moveTo(pos1.x * sc, pos1.y * sc);		}		var i:Number;		if(this.forward) {			for(i = 0; i <= s; i++) {				if(isNaN(calc[i])) {					phi = ra * pi * (i / d);									p = m * phi / 4;							r = pow(pow(abs(cos(p) / 1), n2) -(-pow(abs(sin(p) / 1), n3)), 1 / n1);					if (r == 0) {						x = y = 0;					}					else {						r = 1 / r;						x = r * cos(phi) * sc;						y = r * sin(phi) * sc;					}					q = calc[i] = {x:x, y:y};				} else {					q = calc[i];				}				mc.graphics.lineTo(q.x, q.y);			}		} else {			i = s;			while(--i>-1) {				if(isNaN(calc[i])) {					phi = ra * pi * (i / d);									p = m * phi / 4;							r = pow(pow(abs(cos(p) / 1), n2) -(-pow(abs(sin(p) / 1), n3)), 1 / n1);					if (r == 0) {						x = y = 0;								}					else {						r = 1 / r;						x = r * cos(phi) * sc;						y = r * sin(phi) * sc;					}					q = calc[i] = {x:x, y:y};				} else {					q = calc[i];				}						mc.graphics.lineTo(q.x, q.y);			}		}		}		/* Optimized, less readable code.*/	private function getPoint(m:Number, n1:Number, n2:Number, n3:Number, phi:Number):Object {				var r:Number;				var x:Number, y:Number;		var cos:Function = Math.cos;		var sin:Function = Math.sin;		var pow:Function = Math.pow;		var abs:Function = Math.abs;				var p:Number;		p = m * phi / 4;				r = pow(pow(abs(cos(p) / 1), n2) -(-pow(abs(sin(p) / 1), n3)), 1 / n1);		if (r == 0) {			x = y = 0;					}		else {			r = 1 / r;			x = r * cos(phi);			y = r * sin(phi);		}				return {x:x, y:y};	}		/*getter / setter*/	public function get m():Number {		return this.m_m;	}	public function set m(m:Number):void {		this.m_m = m;	}	public function get n1():Number {		return this.m_n1;	}	public function set n1(n1:Number):void {		this.m_n1 = n1;	}	public function get n2():Number {		return this.m_n2;	}	public function set n2(n2:Number):void {		this.m_n2 = n2;	}	public function get n3():Number {		return this.m_n3;	}	public function set n3(n3:Number):void {		this.m_n3 = n3;	}	public function get range():Number {		return this.m_range;	}	public function set range(range:Number):void {		this.m_range = range;	}	public function get scaling():Number {		return this.m_scaling;	}	public function set scaling(scaling:Number):void {		this.m_scaling = scaling;	}	public function get detail():Number {		return this.m_detail;	}	public function set detail(detail:Number):void {		this.m_detail = detail;	}			public function get animateFromCenter():Boolean {		return this.m_animateFromCenter;	}	public function set animateFromCenter(bool:Boolean):void {		this.m_animateFromCenter = bool;	}			override public function getStartValue():Number {				return 0;	}		override public function getEndValue():Number {				return 100;	}		override public function getCurrentValue():Number {		var start:Number;		var end:Number;		var current:Number;				var multipleValues:Boolean;				if(this.multipleValues) {			start = super.getStartValues()[0];			end = super.getEndValues()[0];			current = super.getCurrentValues()[0];		} else {			start = super.getStartValue();			end = super.getEndValue();			current = super.getCurrentValue();		}		if(start < end) {							return (current - start) / (end - start) * 100;		} else {			return 100 - ((current - end) / (start - end) * 100);		}	}}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图在线观看| 成人性视频免费网站| 亚洲精品老司机| 国产日产欧美一区| 久久综合av免费| 精品久久久网站| 26uuu欧美| 久久影视一区二区| 久久久不卡网国产精品一区| 国产欧美日本一区二区三区| 国产日产欧美一区| 亚洲天堂免费看| 亚洲欧美一区二区久久| 亚洲美女偷拍久久| 丝袜美腿亚洲一区| 国产一区二区在线视频| 国产精品77777| 色婷婷av一区二区三区之一色屋| 欧美艳星brazzers| 欧美一区二区三区色| xvideos.蜜桃一区二区| 国产精品人成在线观看免费| 亚洲欧美成aⅴ人在线观看| 亚洲综合激情小说| 另类成人小视频在线| 国产乱色国产精品免费视频| 成人激情文学综合网| 欧美在线观看视频一区二区 | 51久久夜色精品国产麻豆| 欧美精品777| 久久久久国产一区二区三区四区| 国产精品久久久久一区| 日本欧美加勒比视频| 国产呦萝稀缺另类资源| 91丨九色porny丨蝌蚪| 日韩一区二区三免费高清| 国产精品免费av| 日韩av电影免费观看高清完整版 | 久久电影网站中文字幕| 高清成人免费视频| 欧美另类高清zo欧美| 中文欧美字幕免费| 免费高清视频精品| 色狠狠综合天天综合综合| 久久久精品tv| 美国毛片一区二区三区| 色噜噜狠狠色综合中国| 久久久久久久久岛国免费| 日韩成人免费电影| 日本精品一级二级| 国产精品久久久久久久浪潮网站 | 国产精品电影一区二区| 蜜桃视频在线观看一区二区| 91香蕉视频黄| 国产精品网站导航| 老色鬼精品视频在线观看播放| 日韩欧美国产一区二区在线播放| 色婷婷综合久久久久中文一区二区 | 亚洲一区二区三区四区在线 | 在线免费观看日本欧美| 亚洲电影一级片| 日韩一区二区三区三四区视频在线观看 | 欧美蜜桃一区二区三区| 麻豆国产91在线播放| 国产亚洲美州欧州综合国 | 成人精品视频一区二区三区尤物| 亚洲婷婷在线视频| 日韩午夜激情免费电影| 99综合影院在线| 日本成人中文字幕| 欧美国产一区在线| 欧美一区二区三区在线电影| 国产成人精品在线看| 亚洲综合图片区| 久久久久久久久久久久电影| 91福利国产精品| 国产精品白丝av| 日本亚洲一区二区| 国产精品午夜久久| 日韩一区二区麻豆国产| 成人免费毛片片v| 国内精品久久久久影院薰衣草 | 久久综合狠狠综合久久激情| 成人综合婷婷国产精品久久蜜臀| 亚洲一区二区在线播放相泽| 欧美videos大乳护士334| 91年精品国产| 国产98色在线|日韩| 日韩视频一区二区在线观看| 国产精品成人一区二区三区夜夜夜| 欧美日韩精品一区视频| 不卡的电影网站| 国产高清一区日本| 亚洲v中文字幕| 亚洲三级电影全部在线观看高清| 精品国产乱码久久久久久久久| 91福利小视频| 91视频在线观看| 99国产精品视频免费观看| 国产麻豆欧美日韩一区| 日韩电影网1区2区| 亚洲不卡一区二区三区| 亚洲精品久久久蜜桃| 亚洲美女在线国产| 亚洲三级视频在线观看| 国产精品不卡一区| 中文字幕一区二区三区色视频| 久久久久久久综合狠狠综合| 日韩欧美国产精品一区| 欧美一区二区日韩一区二区| 欧美日韩一区二区欧美激情| 一本色道亚洲精品aⅴ| 97精品国产露脸对白| 国产精品一区免费在线观看| 麻豆91精品视频| 日日夜夜一区二区| 亚洲一区二区三区爽爽爽爽爽| 久久精品人人做人人综合| 日韩欧美国产精品一区| eeuss影院一区二区三区| 国产精品中文字幕日韩精品| 日韩精品亚洲专区| 日本中文在线一区| 国产一区二区在线看| 国产一区二区三区免费观看| 精品在线观看免费| 国产成人亚洲精品青草天美| 成人激情文学综合网| 在线视频一区二区三| 欧美人动与zoxxxx乱| 日韩欧美一区二区免费| 久久久久久久综合狠狠综合| 国产精品欧美一区喷水| 亚洲精品videosex极品| 亚洲成人在线观看视频| 蜜乳av一区二区| 丁香天五香天堂综合| 99视频有精品| 欧美老肥妇做.爰bbww| 日韩欧美视频一区| 欧美激情一二三区| 亚洲图片欧美色图| 国内精品第一页| 91麻豆文化传媒在线观看| 欧美男生操女生| 国产三级一区二区| 一二三区精品视频| 精品一区二区三区香蕉蜜桃| 成人国产电影网| 欧美久久一二区| 国产欧美一区二区三区鸳鸯浴| 亚洲激情五月婷婷| 激情五月婷婷综合| 91免费看`日韩一区二区| 日韩一区二区三区高清免费看看| 国产亚洲一区字幕| 午夜精品久久久久久久| 国产精品影视天天线| 欧美午夜理伦三级在线观看| 久久青草国产手机看片福利盒子 | 久久久精品2019中文字幕之3| 一区二区三区在线看| 韩国视频一区二区| 欧美美女激情18p| 亚洲日本va在线观看| 美洲天堂一区二卡三卡四卡视频| 91日韩在线专区| 久久理论电影网| 午夜视频一区二区三区| 99久久伊人网影院| 精品国产自在久精品国产| 亚洲福利视频三区| 91在线免费播放| 久久精品这里都是精品| 日本麻豆一区二区三区视频| 欧美偷拍一区二区| 国产精品国产三级国产aⅴ入口| 蜜臀av国产精品久久久久| 欧美无乱码久久久免费午夜一区 | 色综合天天在线| 国产欧美日韩综合| 精品中文av资源站在线观看| 欧美日韩国产免费一区二区| 综合久久久久综合| 国产精品88888| 久久九九国产精品| 国产乱码字幕精品高清av| 日韩欧美久久一区| 美脚の诱脚舐め脚责91| 欧美一级理论性理论a| 亚洲一区电影777| 色噜噜偷拍精品综合在线| 亚洲啪啪综合av一区二区三区| 成人综合激情网| 自拍偷在线精品自拍偷无码专区| 国产一区二区三区在线观看免费视频 | 奇米精品一区二区三区在线观看一 | 欧美综合在线视频| 亚洲综合色成人| 在线观看网站黄不卡|