複数のアニメーションを使いこなす
デフォルトで用意されたアニメーションを利用するだけでも十分ですが、これらを複数組み合わせることで、新しいアニメーションを作成することもできます。具体的には以下の関数が用意されています。
関数 | 説明 |
dojo.fx.Toggler(/*Object*/ args) | オブジェクトの表示・非表示アニメーションを簡単に制御するためのTogglerオブジェクトを生成する関数。Togglerオブジェクトは、show/hideメソッドを持ち、Argsには以下のパラメータを指定する
|
dojo.fx.chain(/*Array*/ animations) | 配列として渡された、複数のアニメーションを連続して実行するAnimationオブジェクトを生成する |
dojo.fx.combine(/*Array*/ animations) | 配列として渡された、複数のアニメーションを並列に実行するAnimationオブジェクトを生成する |
例えば以下のようなコードで、オブジェクトをwipeIn/OutさせるためのTogglerオブジェクトを生成、利用できます。
var toggler = new dojo.fx.Toggler({ node: "targetId", showFunc: dojo.fx.wipeIn, showDuration: 500, hideFunc: dojo.fx.wipeOut, hideDuration: 500 }); toggler.show(); /*オブジェクトを表示する*/ toggler.hide(); /*オブジェクトを非表示にする*/
また、chainとcombineは、複数のアニメーションを連続、または同時に実行する新しいAnimationオブジェクトを生成します。この生成されたAnimationを再度、chainとcombineの引数とすることもでき、非常に強力な機能になっています。以下に、簡単な例を示します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html401/strict.dtd"> <html> <head> <title>Animation Test</title> <style type="text/css"> @import "../dojo-release-1.5.0/dojo/resources/dojo.css"; @import "../dojo-release-1.5.0/dijit/themes/claro/claro.css"; #box { border: 1px solid black; background-color: blue; width: 100px; height: 100px; } </style> <script type="text/javascript" src="../dojo-release-1.5.0/dojo/dojo.js" djConfig="parseOnLoad: true"> </script> <script type="text/javascript"> dojo.require("dojo.fx"); dojo.addOnLoad(function() { dojo.style("box", "opacity", "0"); // オブジェクトをフェードインして表示させた後、画面下へオブジェクトを移動する var chain = dojo.fx.chain([ dojo.fadeIn({ node: "box", duration: 1000, }), dojo.fx.slideTo({ node: "box", duration: 1000, left: 0, top: 250 }) ]); // オブジェクトを画面右に移動させながら、オブジェクトをフェードアウトして非表示にする var combine = dojo.fx.combine([ dojo.fadeOut({ node: "box", duration: 1000, }), dojo.fx.slideTo({ node: "box", duration: 1000, left: 500, top: 100 }) ]); //2つのchainとcombineしたアニメーションを、さらに連続実行させる var animation = dojo.fx.chain([chain, combine]); animation.play(); }); </script> </head> <body class="claro"> <h1>青い箱がフェードインして移動し、移動しながらフェードアウトして消えます</h1> <div id="box"> </div> </body> </html>
まず、変数chainに、オブジェクトをフェードインアニメーションで表示し、その後、画面下方へとオブジェクトを移動するアニメーションをdojo.fx.chainで生成します。次に、変数combineに、画面右上へとオブジェクトを移動しながら、徐々にフェードアウトさせるアニメーションをdojo.fx.combineで生成します。最後に、生成された2つのchainとcombineアニメーションオブジェクトを、再度dojo.fx.chainで連続実行させています。では早速実行してみましょう。青い箱がフェードインして表示され、下方に移動、その後右上に移動しながらフェードアウトして消えるアニメーションが表示されるはずです。