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