Flashで等速直線運動(3)

 y=sin(x) の傾きが最大になるのは、x=0のときだ(y’=cos(x))。
 このときの傾きは、cos(0)=1 である。
 ピンク色の直線y=xは原点でy=sin(x)と接する。
y=sin(x),y=x
 水色の矩形は、一辺がπ/2の正方形だ。
 このグラフはIllustratorで縦横変倍を掛けても、接する関係は変わらないので、次のように推測できる。
等速時間=加速時間中の移動距離×π/2

 加速運動する時間と、等速運動する時間を同じだけとると、等速運動中の移動距離は、加速時間中の移動距離のπ/2倍である。

 つまり、ease:Sine.easeInで1秒間に100px移動させた後、滑らかに等速運動に移行するには、ease:Linear.easeNoneでは1秒間に100*π/2≒157px移動させるように指定すればよい。

 これが解答ということになるだろう。

 左は単純に100px移動→157px移動にしたもの。右はそれを画面全体に拡大するため168px→264pxにした。どちらも1秒間加速し、その後1秒間等速で動く。

package{
	import flash.display.Sprite;
	import com.greensock.*;
	import com.greensock.easing.*;
	
	public class main extends Sprite{
		public var b1:ball;
		public var b2:ball;
		
		public function main(){
			b1=new ball();
			b1.x=80;
			b1.y=24;
			addChild(b1);
			
			b2=new ball();
			b2.x=240;
			b2.y=24;
			addChild(b2);
			
			TweenLite.to(b1,1,{y:b1.y+100,ease:Sine.easeIn});
			TweenLite.to(b1,1,{y:b1.y+257,overwrite:false,delay:1,ease:Linear.easeNone});
			
			TweenLite.to(b2,1,{y:b2.y+168,ease:Sine.easeIn});
			TweenLite.to(b2,1,{y:b2.y+432,overwrite:false,delay:1,ease:Linear.easeNone});
			
						
		}
	
	}

}


Want to Leave a Reply?