うむるむ

うむるむ はユーザー様にとって中途半端に役に立ち、また、ほとんど身の無い話題、情報を提供することがまれにあります。



[ AS3 ] TweenMax.sequenceかわいいよ - 08/08/12 14:46

AS2だとFuseにpushしていけば、このトゥイーンが終わったら次はこれ、というように自然に流していけたけど、AS3でトゥイーン系のクラスはFuseに比べると使い勝手がイマイチ悪い、
そんな風に思ってた時期が私にもありました。
TweenMax.sequence を使えば割と(あくまで割と、なんだけど)解決。勉強不足っぷりを発揮してしまったよ。

まずAS2でFuseを使ったサンプルを以下に。

var fuse = new Fuse();
fuse.push({target:mc, _x:100, time:1, ease:"easeInOutCubic"});
fuse.push({target:mc, _y:100, time:1, ease:"easeInOutCubic"});
fuse.push({target:mc, _alpha:0, time:1, ease:"linear"});
fuse.start();

x座標を100まで1秒、その後y座標を100まで1秒。最後にアルファを1秒かけて0にして終了という、3動作のごく普通のトゥイーン。


これをAS3、TweenMaxで書くと

TweenMax.to(mc1, 1, {x:100, ease:Cubic.easeInOut});
TweenMax.to(mc1, 1, {y:100, delay:1, overwrite:false, ease:Cubic.easeInOut});
TweenMax.to(mc1, 1, {alpha:0, delay:2, overwrite:false, ease:Linear});

と、こんな具合。AS2でのZigoEngine.doTweenを並べるのと同じ。
前の動作のtimeとdelayを計算して、それを新しいトゥイーンのdelayに設定しないといけないので、調整する時に面倒。
overwriteはFuseのautoStopみたいなもんで、そのトゥイーンで前までのトゥイーンを上書き(中止)するかの設定で、デフォルトがtrue。なので、上の例でoverwriteをfalseにしないと最後のアルファのトゥイーンしか動かなくなる。


これを簡単に設定できるTweenMax.sequenceを使った例が以下。

TweenMax.sequence(
  mc1,
  [
    {time:1, x:100, ease:Cubic.easeInOut},
    {time:1, y:100, ease:Cubic.easeInOut},
    {time:1, alpha:0, ease:Linear}
  ] );

まずターゲットを指定して、動作の部分は後に続く配列に突っ込んである。
Fuseのpushとなんとなく似てる、ってかそのものか。
delayの計算をしない分、調整が楽になる。改行をちゃんとすればきっと見やすくもなるはず。
欠点があるとすれば、あるターゲットについてしか設定できないことだろうか。上の例だとmc1についてしか設定できない。


んで、それも解決できていたりする。複数ターゲットのシーケンス設定がTweenMax.multiSequence

TweenMax.multiSequence(
  [
    {target:mc1, time:1, x:100, ease:Cubic.easeInOut},
    {target:mc1, time:1, y:100, ease:Cubic.easeInOut},
    {target:mc1, time:1, alpha:0, ease:Linear}
  ] );

ZigoEngine.doTweenに配列を突っ込む様なものね。
マルチなシーケンスなので、もともとは複数のターゲットにシーケンス設定をするもの(asファイルにもそう書いてあった)だけど、例の様にターゲットを全部同じにすることも勿論できる(あまり意味は無さげだけど)。

と、こんな感じで出来たので今の所はTweenMaxで不自由なし。
ただ、FuseはObjectのみならず、Objectの配列をpushできていたので、そういう事をしたいときにどうすんべ、と思ったりする。sequenceの引数配列は1次元限定のようだし。
この辺は必要になったときに色々考えるとするよ。でもきっと力技で強引に行くんだと思う。
だからその前にバージョンアップされることを期待するよ。

« [ AS3 ] removeEventListenerと無名関数 | ブログトップ | [ コミケ74夏 ] コミケ74、2日目雨なのか? »

トラックバックURL :

コメント投稿

名前:
コメント:



管理人 um(うむ)@web界の名もなき底辺労働者
サイト うむるむ http://umroom.com/
連絡先 umroom@gmail.com