JSTweenerでアニメーション
JSTweenerを使ってスライドしてみようと思ったものの、
AS3でTweener使ってたときの感覚で書いたら巧くいかなかったのでメモを。
思い通りに動かなかったコードは次のもの。
var element = document.getElementById('hoge'); element.style.position = 'absolute'; element.style.left = '1024px'; JSTweener.addTween(element, { time: 2, transition: 'linear', left: 0 });
実行結果は、アニメーションはなく、2秒後に0pxに移りました。
何故これでアニメーションにならないか。
AS3のときはこれでいけたじゃないか!
leftの値が文字列で保存されてるからなのか?(原因は未確認)
なんてことを思いながらしばらく嵌り、サンプルコードを覗いてみると違った書き方でした。
それを基にコード修正。
// 動かしたい要素 var element = document.getElementById('hoge'); element.style.position = 'absolute'; element.style.left = '1024px'; // アニメーション用の値 var o = {left: 1024}; JSTweener.addTween(o, { time: 2, transition: 'linear', left: 0, onUpdate: function(el, o){ el.style.left = o['left'] + 'px'; }, onUpdateParams: [element, o] });
こんな感じで無事動きましたとさ。