[BetweenAS3] BetweenAS3で、Matrix と ColorTransformのTweenの表記が面倒なので簡単に変換できるユーティリティを作りました

2010/03/31

こんにちは。きんくまです。

BetweenAS3のColorTransformとMatrixのTweenをするときに、
つっこむObjectの表記がめんどいです。

transform:{matrix:{a:mtx.a, b:mtx.b, c:mtx.c, d:mtx.d, tx:mtx.tx, ty:mtx.ty}}}
transform: {
	colorTransform: {
		redMultiplier:rm,
		greenMultiplier:gm,
		blueMultiplier:bm,
		alphaMultiplier:am,
		redOffset:ro,
		greenOffset:go,
		blueOffset:bo,
		alphaOffset:ao
	}
}

なので、MtrixとかColorTransformを渡してあげると、それように変換してくれるクラスを作りました。

package  
{
	import flash.geom.ColorTransform;
	import flash.geom.Matrix;
	/**
	 * ...
	 * @author KinkumaDesign
	 */
	public class BetweenAS3ObjectUtil
	{		
		public static function getMatrixObj(mtx:Matrix):Object
		{
			return {transform:{matrix:{a:mtx.a, b:mtx.b, c:mtx.c, d:mtx.d, tx:mtx.tx, ty:mtx.ty}}}
		}
		
		public static function getColorTransformObj(trans:ColorTransform):Object
		{
			var rm:Number = trans.redMultiplier;
			var gm:Number = trans.greenMultiplier;
			var bm:Number = trans.blueMultiplier;
			var am:Number = trans.alphaMultiplier;
			var ro:Number = trans.redOffset;
			var go:Number = trans.greenOffset;
			var bo:Number = trans.blueOffset;
			var ao:Number = trans.alphaOffset;
			return {
				transform: {
					colorTransform: {
						redMultiplier:rm,
						greenMultiplier:gm,
						blueMultiplier:bm,
						alphaMultiplier:am,
						redOffset:ro,
						greenOffset:go,
						blueOffset:bo,
						alphaOffset:ao
					}
				}
			}
		}
	}
}

使い方はこんな感じ

		private function initColorTransformTween():void
		{
			var color1:ColorTransform = new ColorTransform(1, 1, 1, 1, -200, 200, 0, 0);
			var color2:ColorTransform = new ColorTransform();
			
			//こんな感じにつかいます
			var start:Object = BetweenAS3ObjectUtil.getColorTransformObj(color2);
			var end:Object = BetweenAS3ObjectUtil.getColorTransformObj(color1);
			
			_colorTransTw = BetweenAS3.tween(_colorTransSP, end, start, 1, Quad.easeIn);
		}

		private function initMatrixTween():void
		{
			var mtx:Matrix = new Matrix();
			var hw:Number = _matrixSP.width / 2;
			var hh:Number = _matrixSP.height / 2;
			mtx.translate(-hw, -hh);
			mtx.rotate(Math.PI * 45 / 180);
			mtx.scale(4, 4);
			mtx.translate(hw + _matrixSP.x, hh + _matrixSP.y);
			
			var mtx2:Matrix = _matrixSP.transform.matrix;
			
			//こんな感じにつかいます
			var start:Object = BetweenAS3ObjectUtil.getMatrixObj(mtx2);
			var end:Object = BetweenAS3ObjectUtil.getMatrixObj(mtx);
			
			_matrixTw = BetweenAS3.tween(_matrixSP, end, start, 1, Back.easeOut);
		}

久々にwonderflにも投稿しました。

[BetweenAS3] ColorTransform and Matrix Utility – wonderfl build flash online
LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る