BetweenAS3使い方、Tweenerからの乗り換えのために。
先日α版が公開されたBetweenAS3ですが、昨日から少しずつ触ってみました。
Tweenerしか使ってなかったので、BetweenAS3をTweenerレベルまで使えるようになったら移行しようと思ってます。アップデート終了しましたし。
impot周り
いわゆるcaurina.transitions.Tweenerにあたるもの(tweenの発行とeasing)を使おうとしたときに必要なのは以下。
org.libspark.betweenas3.BetweenAS3
org.libspark.betweenas3.easing.*
easingがlinerでいいよーという場合にはorg.libspark.betweenas3.BetweenAS3のみで問題ないはずです(あんまりないと思いますが。)
あと後述するイベントハンドラへの登録まで行う場合はさらに以下の内容のクラスが必要です。
org.libspark.betweenas3.tweens.ITween
org.libspark.betweenas3.events.TweenEvent
または
org.libspark.betweenas3.tweens.IObjectTween
org.libspark.betweenas3.events.TweenEvent
という感じでTweenEventと、ITweenもしくはIObjectTweenが必要。
ITweenと、iObjectTweenの違いも後述。
Tweenさせる。
本題です。どう書くか。
1 | BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut).play(); |
第一引数:ターゲットとなるオブジェクト
第二引数:tween先(Tweenerと同じように指定する)
第三引数:tween元(Tweenerにはなかった!)
第四引数:時間(BetweenAS3のデフォルトだと1.0、Tweenerだと0だったはず)
第五引数:easing(タイプを指定して、そのプロパティでin,outなどを指定)
注意:play()ってちゃんと書きましょう。
これで、Tweenerと同じようにtweenはできたはず。
TweenEvent
これが個人的に一番うれしいところ。
TweenerでもonCompleteはあるんだけど、コードが煩雑になってしまうので、あんまり使いたくなかったんです。(使ってたけど)
BeTweenAS3では、イベントハンドラへ登録することができるようになったのでかなりいい感じです。
1 2 3 4 5 6 7 8 | var myTween:ITween = BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut); myTween.addEventListener(TweenEvent.COMPLETE, onComplete); myTween.play(); private function onComplete(e:TweenEvent):void { trace("COMPLETE"); } |
非常にスッキリでわかりやすい!すてき!
これ、かなり好きなんですが、ITweenだとBetweenAS3.tween()でtweenをつくったときのターゲットとなるオブジェクトにアクセスできないみたいです。
なので、ターゲットにアクセスしたいときは、ITweenじゃなくて、IObjectTweenをつかいます。
1 2 3 4 5 6 7 8 | var objTween:IObjectTween = BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut); objTween.addEventListener(TweenEvent.COMPLETE, onComplete); objTween.play(); private function onComplete(e:TweenEvent):void { trace(e.target.target); } |
TweenEvent.target.targetでターゲットとなるオブジェクト(mc)にアクセスできます。
あとは、かなりお世話になっていたColorShortcutsとか、fladdictさん制作のMatrixShortcutの絶対座標でのTweenあたりをフォローできるようになれば完全に乗り換えができる気がします。
以上をふまえて、完全に個人的なテンプレコードを。
これ元に改変していけばTweenの発行、イベントリスナへの登録、ターゲットへの参照が楽ちんです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import org.libspark.betweenas3.BetweenAS3; import org.libspark.betweenas3.tweens.IObjectTween; import org.libspark.betweenas3.easing.* import org.libspark.betweenas3.events.TweenEvent; var objTween:IObjectTween = BetweenAS3.tween(mc, { x:100 }, null, 1.0, Cubic.easeOut); objTween.addEventListener(TweenEvent.COMPLETE, onComplete); objTween.play(); private function onComplete(e:TweenEvent):void { trace(e.target.target); } |
まとめ
BetweenAS3は、まだアルファ版なのでまだ修正が有ると思いますが、期待しつつ待ちたいと思います。
また、去年の今頃Tweenerに出会ってASを書く楽しさを知りました。
いろんなサイトを検索しまくって、それでもうまくいかなくて、Tweenできた時はすごくうれしかったです。
今後そういうBetweenAS3はそういう初心者が入門的する際に使ってもらえるライブラリになるんじゃないかな、と勝手に思っていたりもしています。
僕が体験したようなうれしい!みたいな感動を最初はコピペでもなんでもいいので体験できるとAS書く人がどんどん増えるんじゃないかなーと思います。
最後のテンプレコードはそういう意味も含めて書きました(半分は自分のためです)