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

📄 animationtests.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.tests
{
	import flare.animate.Scheduler;
	import flare.animate.Tween;
	import flare.animate.interpolate.ArrayInterpolator;
	import flare.animate.interpolate.ColorInterpolator;
	import flare.animate.interpolate.DateInterpolator;
	import flare.animate.interpolate.MatrixInterpolator;
	import flare.animate.interpolate.NumberInterpolator;
	import flare.animate.interpolate.PointInterpolator;
	import flare.animate.interpolate.RectangleInterpolator;
	import flare.util.Arrays;
	import flare.util.Colors;
	
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	
	import unitest.TestCase;

	public class AnimationTests extends TestCase
	{
		public function AnimationTests() {
			addTest("testNumberInterp");
			addTest("testDateInterp");
			addTest("testColorInterp");
			addTest("testArrayInterp");
			addTest("testPointInterp");
			addTest("testRectangleInterp");
			addTest("testMatrixInterp");
			addTest("testIdCancel");
		}
		
		public function testNumberInterp():void {
			var o:Object = {};
			var ni:NumberInterpolator = new NumberInterpolator(o, "v", 0, 1);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				ni.interpolate(f);
				assertEquals(f, o.v);
			}
		}
		
		public function testColorInterp():void {
			var s:uint = 0x00ff0000;
			var t:uint = 0x000000ff;
			var o:Object = {v:s};
			var ci:ColorInterpolator = new ColorInterpolator(o, "v", s, t);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				ci.interpolate(f);
				assertEquals(Colors.interpolate(s,t,f), o.v);
			}
			
			s = 0xff00ff00;
			t = 0x00ff0000;
			ci.reset(o, "v", s, t);
			for (f=0; f<=1.0; f+=0.1) {
				ci.interpolate(f);
				assertEquals(Colors.interpolate(s,t,f), o.v);
			}
		}
		
		public function testDateInterp():void {
			var t0:Number = 0;
			var t1:Number = 10000000;
			var s:Date = new Date(t0);
			var t:Date = new Date(t1);
			var o:Object = {};
			var di:DateInterpolator = new DateInterpolator(o, "v", s, t);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				di.interpolate(f);
				assertTrue(Math.abs(f*t1 - o.v.time) < 2);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
			
			di.reset(o, "v", s, o.v);
			for (f=0; f<=1.0; f+=0.1) {
				di.interpolate(f);
				assertTrue(Math.abs(f*t1 - o.v.time) < 2);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
		}
		
		public function testArrayInterp():void {
			var s:Array = [0, 0, 0, 0, 0];
			var t:Array = [1, 1, 1, 1, 1];
			var o:Object = {v:Arrays.copy(s)};
			var ai:ArrayInterpolator = new ArrayInterpolator(o, "v", s, t);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				ai.interpolate(f);
				for (var i:int=0; i<s.length; ++i)
					assertTrue(Math.abs(f - o.v[i]) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
			
			ai.reset(o, "v", s, t);
			for (f=0; f<=1.0; f+=0.1) {
				ai.interpolate(f);
				for (i=0; i<s.length; ++i)
					assertTrue(Math.abs(f - o.v[i]) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
		}
		
		public function testPointInterp():void {
			var s:Point = new Point(0, 0);
			var t:Point = new Point(1, 1);
			var o:Object = {v:s};
			var pi:PointInterpolator = new PointInterpolator(o, "v", o.v, t);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				pi.interpolate(f);
				assertTrue(Math.abs(f - o.v.x) < 0.000001);
				assertTrue(Math.abs(f - o.v.y) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
			
			pi.reset(o, "v", s, o.v);
			for (f=0; f<=1.0; f+=0.1) {
				pi.interpolate(f);
				assertTrue(Math.abs(f - o.v.x) < 0.000001);
				assertTrue(Math.abs(f - o.v.y) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
		}
		
		public function testRectangleInterp():void {
			var s:Rectangle = new Rectangle(0, 0, 0, 0);
			var t:Rectangle = new Rectangle(1, 1, 1, 1);
			var o:Object = {v:s};
			var ri:RectangleInterpolator = new RectangleInterpolator(o, "v", o.v, t);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				ri.interpolate(f);
				assertTrue(Math.abs(f - o.v.x) < 0.000001);
				assertTrue(Math.abs(f - o.v.y) < 0.000001);
				assertTrue(Math.abs(f - o.v.width) < 0.000001);
				assertTrue(Math.abs(f - o.v.height) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
			
			ri.reset(o, "v", s, o.v);
			for (f=0; f<=1.0; f+=0.1) {
				ri.interpolate(f);
				assertTrue(Math.abs(f - o.v.x) < 0.000001);
				assertTrue(Math.abs(f - o.v.y) < 0.000001);
				assertTrue(Math.abs(f - o.v.width) < 0.000001);
				assertTrue(Math.abs(f - o.v.height) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
		}
		
		public function testMatrixInterp():void {
			var s:Matrix = new Matrix(0, 0, 0, 0, 0, 0);
			var t:Matrix = new Matrix(1, 1, 1, 1, 1, 1);
			var o:Object = {v:s};
			var mi:MatrixInterpolator = new MatrixInterpolator(o, "v", o.v, t);
			
			for (var f:Number=0; f<=1.0; f+=0.1) {
				mi.interpolate(f);
				assertTrue(Math.abs(f - o.v.a) < 0.000001);
				assertTrue(Math.abs(f - o.v.b) < 0.000001);
				assertTrue(Math.abs(f - o.v.c) < 0.000001);
				assertTrue(Math.abs(f - o.v.d) < 0.000001);
				assertTrue(Math.abs(f - o.v.tx) < 0.000001);
				assertTrue(Math.abs(f - o.v.ty) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
			
			mi.reset(o, "v", s, o.v);
			for (f=0; f<=1.0; f+=0.1) {
				mi.interpolate(f);
				assertTrue(Math.abs(f - o.v.a) < 0.000001);
				assertTrue(Math.abs(f - o.v.b) < 0.000001);
				assertTrue(Math.abs(f - o.v.c) < 0.000001);
				assertTrue(Math.abs(f - o.v.d) < 0.000001);
				assertTrue(Math.abs(f - o.v.tx) < 0.000001);
				assertTrue(Math.abs(f - o.v.ty) < 0.000001);
			}
			assertNotEquals(s, o.v);
			assertNotEquals(t, o.v);
		}
		
		public function testIdCancel():void {
			var o:Object = {a:1, b:2};
			var t0:Tween = new Tween(o, 1, {a:0});
			var t1:Tween = new Tween(o, 1, {a:2}); t1.id = "tween";
			var t2:Tween = new Tween(o, 1, {a:3}); t2.id = "tween";
			
			try {
				t1.id = "change";
				t1.id = "tween";
				assertEquals("tween", t1.id);
			} catch (err:Error) {
				fail("id change for non-running tween caused exception.");
			}
			
			t0.play();
			try {
				t0.id = "change";
				fail("Allowed id change for running transition");
			} catch (e:Error) {	}
			t1.play();
			try {
				t1.id = "change";
				fail("Allowed id change for running transition");
			} catch (e:Error) {	}
			t2.play();
			
			assertTrue(t0.running);
			assertTrue(Scheduler.instance.remove(t0));
			assertFalse(t1.running);
			assertFalse(Scheduler.instance.remove(t1));
			assertTrue(t2.running);
			assertTrue(Scheduler.instance.remove(t2));
		}
		
	} // end of class AnimationTests
}

⌨️ 快捷键说明

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