タグ別アーカイブ: Easing

JavaScriptのシンプルなトゥイーンエンジン

JS系のTweenライブラリだと、オブジェクトのCSSプロパティにトゥイーンをかける事を基本に設計されている場合が多いかとおもいます。もちろんTweenかけるものって基本的に表示要素なので、CSSにトゥイーンをかけることは間違ってはいないのですが、以前の記事にてSprite3Dを使用しましたが、Sprite3Dを使ってトゥイーンをかけたい場合は、CSSプロパティではなく、メソッドを実行する必要があります。もちろんメソッドの中ではCSSプロパティを操作しているわけですが。

そういった目的に絞って、シンプルなトゥイーンエンジンが必要になり、作りましたので投稿します。
概要は、オブジェクトのプロパティの値を現在の値から、指定した値まで、指定秒で、指定イージング関数を通して変化を与えつづけます
ソース
デモページ

基本的な使い方ですが、まずはじめに第一引数にオブジェクトを渡してTween関数を実行して、戻り値を変数に格納してください。クラスベースのオブジェクト指向言語的に考えますと、Tweenクラスをnewしてインスタンスを生成するイメージです。

var tween = knockknock.jp.Tween({a:0, b:0});

トゥイーンを実行したいタイミングで、このインスタンスのplayメソッドを第一引数に変化を与えたいプロパティと変化量を、第二引数にイージング関数と時間、各種コールバックをそれぞれオブジェクトにして渡して、実行してください。

tween.play({
    a: 100
    b: -100
},{
    easing: knockknock.jp.Easing.sineEaseOut,
    duration: 1000,
    play: function(e){
        // トゥイーン開始
    },
    update: function(e){
        // プロパティaの値
        console.log(e.target.a);
        // プロパティbの値
        console.log(e.target.b);
    },
    complete: function(e){
        // トゥイーン終了
    }
});


コールバック関数updatee.targetを参照することで、変化量を取得できますので、この値を利用して必要なトゥイーンを行ってください。例えば以下のようにupdate関数を定義すると通常jQueryのAnimateを実行したときのように、CSSに変化を与えることができます。

var box = document.getElementById("box");
var tween = knockknock.jp.Tween({left:0});
tween.play({
    left: 500
},{
    easing: knockknock.jp.Easing.sineEaseOut,
    duration: 1000,
    update: function(e){
        box.style.left = e.target.left + "px";
    }
});

じつは、この記事を書きながら調べて気がついたのですが、jQueryのAnimateで全く同じことができるんですね。。。
jQuery の .animate() で普通のオブジェクトをアニメーションさせる

FlashではトゥイーンエンジンはTweenクラスに始まり、TweenerFuseKitTweenMAXBetweenAS3と色々ありますが、JavaScriptでも増えてきた感はあります。GSAP JSとかよさそうですね。個人的にはBetweenAS3を非常に愛用していましたので、BetweenJSに期待したいところです。