Tweenクラス

提供: LWF Wiki
2013年12月3日 (火) 20:48時点におけるTamago (トーク | 投稿記録)による版

移動: 案内検索

目次

Tweenクラスとは?

LWFにはtween.jsが含まれておりMovieインスタンスやBitmapCLipインスタンスに簡単に動的なアニメーションを設定することができます。
タイムライン上に静的配置されているものにも反映することはできますが、反映後はタイムラインで設定したトゥイーンは適用されなくなってしまうので注意してください

※このTweenクラスで行われる処理は、処理が重い等でフレームスキップがかかった場合、に若干ズレが発生する時があるなど
確実にLWFのフレームと動機しているわけではありません。確実に処理を同期させたい場合はenterFrame処理を使用してください

※tween.js
https://github.com/sole/tween.js/

トゥイーンを設定する

Movieインスタンス、またはBitmapClipインスタンスにTweenを設定することが出来ます。 下記はサンプルになります。

//Movieのtweenを生成
var tween = <Movieインスタンス>.addTween()

//x:100、y:100の位置に30フレームかけて移動する
tween.to({x:100, y:100},30)

//トゥイーンを開始する
tween.start();

addTween()を使用するとtweenインスタンスが返ってきます。

また、メソッドチェーンが使えるので下記のように書いても問題ありません。

//tween メソッドチェーン指定
var tween = <Movieインスタンス>.addTween()
    .to({x:100},30)
    .start();

.to()の第1引数はトゥイーン完了後のプロパティをオブジェクト型に入れて指定します。
第2引数はトゥイーン完了にかかる時間をフレーム単位で指定します。

また、to()の第1引数では複数の到着点を設定することができます。
下記のように設定した場合、(x:200,y:50)の地点を通って(x:100,y:100)の地点に来る移動を30フレームかけて行う。
という形になります。

//(x:200,y:50)の地点を通って(x:100,y:100)へ
<Movieインスタンス>.addTween()
    .to({x:[200,50],y:[100,100]},30)
    .start();

トゥイーンを停止したい

設定したtweenを止める場合、複数の方法があります。

  • 指定したトゥイーンだけ停止する
  • Movieに適用されているtweenを全て停止する
  • LWF内で設定されているtweenを全て停止する

【指定したトゥイーンだけ停止する】
Movieに対してtweenを設定した時に戻り値としてtweenインスタンスが返ってきます。
そのtweenインスタンスを使うことで、指定したtweenだけ停止することができます。

【サンプル】
//トゥイーンを設定
var tween = <Movieインスタンス>.addTween()
    .to({x:100},100)
    .start();

//トゥイーンを停止
tween.stop();


【Movieに適用されているtweenを全て停止する】 Movieに適用されているtweenを全て停止することができます。

【サンプル】
//トゥイーンを設定
<Movieインスタンス>.addTween()
    .to({x:100},100)
    .start();

//Movieに適用されているtweenを停止
<Movieインスタンス>.stopTweens();


【LWF内で設定されているtweenを全て停止する】 LWF内で適用されているtweenを全て停止することができます。

【サンプル】
//トゥイーンを設定
<Movieインスタンス>.addTween()
    .to({x:100},100)
    .start();

//LWFに適用されているtweenを停止
<LWFインスタンス>.stopTweens();

イージングを設定する

トゥイーンにはイージングをかけることが出来ます。 下記がサンプルになります。

//イージングを設定したtween
var tween = <Movieインスタンス>.addTween()
   .easing(Tween.Easing.Quadratic.Out) 
   .to({x:100},30)
   .start();

.easing()の引数に反映したいイージングを設定します。

※イージングの種類について
http://sole.github.io/tween.js/examples/03_graphs.html
LWFで使用する場合は Tween.Easing.(イージング名) と書きます。

※イージングの挙動を見たい
http://www.robertpenner.com/easing/easing_demo.html

ディレイを設定する

ディレイをかけることで、少し間を置いてからトゥイーンをかけたりすることが出来ます。
下記はサンプルです。

//30フレーム待ってからトゥイーン
<Movieインスタンス>.addTween()
    .delay(30)
    .to({rotation:180},30)
    .start();

.delay()の引数に入れた値の分だけ待ってからトゥイーンを実行します。

トゥイーンにカーブをかけたい

通常は
.to({x:[200,50],y:100},30)
と指定した場合、直線軌道で移動しますが、カーブ(ベジェ曲線)をかけて移動させることも出来ます。
下記はサンプルです。

//カーブを描きながらx:100,y:100に移動する
<Movieインスタンス>.addTween()
    .interpolation(Tween.Interpolation.Bezier)
    .to({x:[200,50],y:100},30)
    .start();

interpolation()の引数に反映したい軌道の補間方法を設定します。

※補間の種類
http://sole.github.io/tween.js/examples/06_array_interpolation.html
LWFで使用する場合 Tween.Interpolation.(補間名) となります。

トゥイーンを連結する

複数のトゥイーンを連結し、トゥイーン1が完了してからトゥイーン2を実行する。
と、いったことが出来ます。
下記はサンプルになります。

//x:100に移動してから、y:100に移動し、180度移転する
<Movieインスタンス>.addTween()
    .to({x:100},30)
    .start()
    //y:100に移動するtweenを生成し連結
    .chain()
    .to({y:100},30)
    //180度回転するtweenを生成し連結
    .chain()  
    .to({rotation:180},30);

.chain()で続けて新しいtweenを連結することが出来ます。
1回目の.chain()は.start()の後に設定してください。
.chain()で生成されたtweenは.start()を行う必要はありません。

トゥイーンが走っている間、関数を実行する

トゥイーン処理が走っている間に指定した関数を実行させることが出来ます。
下記はサンプルになります。

//トゥイーン中の座標を表示する
<Movieインスタンス>.addTween()
    .to({x:200},30)
    .onUpdate(function(){
        console.log(this.x);
    })
    .start();

トゥイーンが動いている間 .onUpdate()の引数に入れた関数が毎フレーム実行され続けます。
chain()などで連結したtweenには反映されません。反映したい場合は別途指定してください。
onUpdate()で実行される関数の this はトゥイーンを設定したMovieインスタンスになります。

※onUpdate内で別のtweenにstopをかけたりといったTweenのAPI動作は行わないでください。

トゥイーンが完了したときに関数を実行する

トゥイーン処理が完了した時に、指定した関数を実行することが出来ます。
下記はサンプルです。

//トゥイーンが完了したらアラートを表示
<Movie.インスタンス>.addTween()
    .to({x:100},30)
    .onComplete(function(){
        alert("complete! x=" + this.x);
    })
    .start();

トゥイーンが完了した時に onComplete() の引数に入れた関数が実行されます。
chain()などで連結したtweenには反映されません。反映したい場合は別途指定してください。
onComplete()で実行される関数の this はトゥイーンを設定したMovieインスタンスになります。

※onComplete内で別のtweenにstopをかけたりといったTweenのAPI動作は行わないでください。