TweenerのautoOverwriteとoverwrite
- 2009 年 8月 17 日
Tweenerの開発が終わったって話を聞いて、TONPOOBLOGさんが日本語訳されているTweener開発者さんの話を改めて読んでいると、開発者故の苦悩が読み取れまして、これまでの経緯やなぜ開発終了なのかその理由が綴られていてなんだか感無量。ただただ使わせていただいている僕からすると本当に頭の下がる思いです。
モダンなデザインのトゥイーンエンジンが登場する中、トゥイーンエンジンのスタンダードとして使われ続けてきた事実は開発者さんのアプローチが支持されてきた証と思います。
そんなTweenerに敬意を込めつつ、記事の中にあるTweener 1.33.74で最後に追加されたautoOverwrite、overwriteプロパティーについて試してみました。
記事によるとTweenerでは、トゥイーン生成時にそのオブジェクトに既にあるトゥイーンを確認し、トゥイーンがあれば上書きするようになっていて、これにより意図した通り(の感覚で)アニメーションするようになっている。
新しいプロパティーのautoOverwriteやoverwriteを使うと、この動作をまとめて又は個別にオフに出来るようになる。
それによってこれまでよりパフォーマンスが上がるらしい。
試してみたのがこちら。
autoOverwriteは、2000個のTweenerを生成してdelayで順番に遅延させててみた。これを繰り返して検証。
overwirteの方はDocumentにあるのとほぼ同じ二つのTweenerを生成。
Tweener.addTween( this.square, { x:450, alpha:0.1, transition:"easeNone", time:4, onOverwrite:function(){ trace( "overwrite" ) } } ); Tweener.addTween( this.square, { x:450, transition:"easeNone", time:2, overwrite:true } ); |
と
Tweener.addTween( this.square, { x:450, alpha:0.1, transition:"easeNone", time:4, onOverwrite:function(){ trace( "overwrite" ) } } ); Tweener.addTween( this.square, { x:450, transition:"easeNone", time:2, overwrite:false } ); |
で挙動の違いを見てみる。
TweenerのautoOverwriteとoverwrite
autoOverwriteは特にTweenerの生成時パフォーマンスに違いが見てとれる。
overwriteは共にまず後で生成した2秒のアニメーションが実行されるのだけれど、falseとしたものは完了後、先に生成した4秒のxの移動が上書きされず実行される。
onOverwriteハンドラはautoOverwriteやoverwriteをfalseにした場合実行されないです。
大量にトゥイーンさせるのはキツイに変わりないようですが、上書き挙動が不用な時のパフォーマンス向上に検討出来ますね。
次のスタンダードはTweensyかBetweenAS3か?新しいトゥイーンエンジンも真剣に探らなきゃなぁと思いつつもTweenerよ、これまでありがとう。これからもよろしくです。