interfaceでクラスの型指定

| コメント(0) | トラックバック(0)
使い方がいまいちわからず使ってこなかったinterfaceの使いどころ。
微妙に違う機能のClassAとClassBがあったとすると。
var a:hogeClass = new ClassA();
var b:hogeClass = new ClassB(); 

hogeClassというinterfaceを作って外部とやりとりするメソッドを定義しておくとコンパイルエラーもせず書き出せます。

package 
{
	public interface hogeClass 
	{
		function commonFumc(val:String,num:Number):void
	}
	
}
package{
	public class  ClassA implements  hogeClass
	{
        }
}
package{
	public class  ClassB implements  hogeClass
	{
        }
}


BetweenAS3の勉強がてら書いたコード
まずinterface定義
package 
{
	import flash.display.MovieClip;
	public interface IBetween  
	{
		function startTween(target:MovieClip,param:Object=null):void
	}
	
}

んでIBetweenをimplementsしたclasssを2つほど
package 
{
	import flash.display.MovieClip;
	import org.libspark.betweenas3.BetweenAS3;
	import org.libspark.betweenas3.tweens.ITween;
	import org.libspark.betweenas3.easing.*;

	public class  Tween1 implements IBetween
	{
		public function Tween1() {
		}
		public function startTween(mc:MovieClip, param:Object = null):void {
			var nColor:int = 255;
			if (param) {
				nColor = param.nColor
			} 
			BetweenAS3.tween(mc, 
				{
					transform: {
						colorTransform: {
							redOffset: nColor
						}
					}
				}, null, 2.0, Cubic.easeOut
			).play();
		}
	}
	
}
package 
{
	import flash.display.MovieClip;
	import org.libspark.betweenas3.BetweenAS3;
	public class  Tween2 implements IBetween
	{
		private var _nx:Number=250;
		public function Tween2() {
		}
		private function setPos(mc:MovieClip,dx:Number, nx:Number):void{
			_nx = nx;
			mc.x = dx;
		}
		public function startTween(mc:MovieClip, param:Object = null):void {
				if (param) {
					setPos(mc, param.dx, param.nx )
				}
			   BetweenAS3.tween(mc, {x: _nx}).play();
		}
	}
	
}

として
			var id:int = Math.floor(Math.random() * 2);
			trace(id);
			var cTween:IBetween 
			switch(id) {
				case 0:
					cTween = new Tween1();
					cTween.startTween( _mc,{nColor:Math.ceil(Math.random() * 255)} );
				break;
				case 1:
					cTween = new Tween2();
					cTween.startTween( _mc,{dx:10, nx:220} );				
				break;
}
みたいな感じで呼んであげるとかいいかなあと。 この本参考にしたんだけどAmazonレビューでは誤字が多いといわれてますな。 考えかたとかは結構勉強になっていいんだけどねえ。




トラックバック(0)

トラックバックURL: http://www.infective.jp/mt5/mt-tb.cgi/106

コメントする