
パターンとライブラリで作るAjaxおいしいレシピ(4)
Ajaxの弱点を補うscript.aculo.usの楽しいエフェクト
アークウェブ株式会社
志田 裕樹
2008/1/7
コンビネーションエフェクトの使用例
■ サンプル【3】「削除」時のエフェクトをDropOutに
「サンプル【2】」では、「削除」時のエフェクトはEffect.Opacityでしたが、これを、Effect.DropOutに変更しました。
| サンプル【3】(拡大表示はこちら、※注意:Operaブラウザでは、一部表示が異なる部分があります) |
ソースコードは次のようになります。
deleteItem: function(id) { |
- - PR -
この「Effect.DropOut」のようなエフェクトをscript.aculo.usでは、「コンビネーションエフェクト」と呼んでいます。
■ コンビネーションエフェクトとは?
コンビネーションエフェクトとは、コアエフェクトを組み合わせることでより凝ったビジュアルエフェクトを実現できるようにしたものです。
例えば、Effect.DropOutは、Effect.Opacityで、Opacityを「0」に近づけると同時に、Effect.Moveを用いて、表示位置を下に移動させることで実現されています。
コンビネーションエフェクトの利用の仕方は基本的にコアエフェクトと同じです。いろいろなエフェクトが用意されていますので、ぜひ試してみてください(参考「Combination Effects in script.aculo.us wiki」)。
エフェクトを順番に実行させる、Queueの使用例
■ サンプル【4】商品画像をゴミ箱にEffect.MoveしてからEffect.DropOut
「削除」時に、サンプル【3】で変更したEffect.DropOutを実行する前に、商品画像をゴミ箱にEffect.Moveするようにしました。
| サンプル【4】(拡大表示はこちら、※注意:Operaブラウザでは、一部表示が異なる部分があります) |
ソースコードは次のようになります。
deleteItem: function(id) { |
$('trash')で、ゴミ箱の位置を取得し、その座標に商品画像をEffect.Moveで移動させています。
今回のサンプルでは、Effect.Move、Effect.DropOutの「options」パラメータに、「queue: 'end'」が指定されています。これはscript.aculo.usの「Queue」という仕組みです。
■ Queueはエフェクトを順番に実行させるための仕組み
エフェクトのオブジェクトを生成すると、新しい(疑似)スレッドが立ち上がり、その上で実行が行われます。そのため、Effect.MoveとEffect.DropOutを続けて書くと、2つのエフェクトが同時に実行されてしまいます。
もし、エフェクトを順番に実行させたい場合は、Queueを使用します。Queueとは、グローバルな待ち行列のようなもので、例えば、エフェクトAとエフェクトBがQueueの中に存在し、エフェクトCを「queue: 'end'」と指定すると、そのエフェクトは待ち行列の一番後ろに追加されます。
もし、エフェクトCを「queue: 'front'」と指定すると、待ち行列の先頭に追加されます(参考「Effect Queues in scriptaculous wiki」)。
複数のエフェクトを同時実行する、Parallelの使用例
■ サンプル【5】X方向、Y方向それぞれの移動をEffect.Morphで別々に指定
「サンプル【4】」では、ゴミ箱への移動にEffect.Moveを使用しましたが、汎用的なパラメータの変化を行う、Effect.Morphを使用することでも同様のことが実現できます。
| サンプル【5】(拡大表示はこちら、※注意:Operaブラウザでは、一部表示が異なる部分があります) |
Effect.Moveの代わりに、次のように記述します。
deleteItem: function(id) { |
このように、複数のエフェクトを同期させながら実行させる仕組みがParallelです。
■ Parallelで複数のエフェクトを同期で実行
Parallelは、同時実行をさせたい要素を第1引数に配列として受け取ります。サンプル【5】では、下記の2つのエフェクトからなる配列を渡しています。
- left値をゴミ箱のleft値に近づけるEffect.Morph
- top値をゴミ箱のtop値に近づけるEffect.Morph
また、Parallelに渡される個々のエフェクトでは「options」に「sync: true」を指定します。これにより、一方のエフェクトだけが実行されたりすることなく、各エフェクトが同期を取りながら実行されます(参考「Effect.Parallel in script.aculo.us wiki」)。
Parallelを使うことで、デフォルトにはないコンビネーションエフェクトを作成することも可能になります。
最後に次ページでは、Transitionの使用例、自作のTransitionの適用例、自作エフェクトの作成例について解説します。
| 1-2-3-4 |
| INDEX | ||
| パターンとライブラリで作るAjaxおいしいレシピ(4) Ajaxの弱点を補うscript.aculo.usの楽しいエフェクト |
||
| Page1 今回はscript.aculo.usの一歩進んだテクニック オンライン・サンプルを段階的に進化させて解剖! サンプルのHTMLソースコードを解剖 |
||
| Page2 全サンプル共通のコントローラーのソースコード エフェクトのないサンプルのビュー コアエフェクトの使用例 エフェクトのコールバックの使用例 |
||
| Page3 コンビネーションエフェクトの使用例 エフェクトを順番に実行させる、Queueの使用例 複数のエフェクトを同時実行する、Parallelの使用例 |
||
| Page4 パラメータの変化スピードを変える、Transitionの使用例 自作したTransitionの適用例 独自エフェクトの作成例 新しいユーザーエクスペリエンスを |
||
パターンとライブラリで作るAjaxおいしいレシピ バックナンバー 連載インデックスへ»
- 第1回 jQueryを使ってTwitterをおいしくマッシュアップ
- 第2回 prototype.jsでYouTubeをインクリメンタルサーチ
- 第3回 Ext JSとprototype.jsで作るリッチなUI
- 第4回 Ajaxの弱点を補うscript.aculo.usの楽しいエフェクト
- 第5回 jQuery UIで実現! Ajaxで複数選択ドラッグ&ドロップ
- 第6回 Aptana Jaxerで解決するAjaxのSEO対策とは?
| リッチクライアント&帳票 全記事一覧へ |
TechTargetジャパン
- 次のモバイルアプリはどのフレームワークで作る? (2012/5/24)
スマホアプリの開発を容易にするJavaScriptのフレームワークが続々と増えている。それぞれの良さや仕組み、何がどこまでできるのかを徹底解剖する - 「LESS&専用エディター」でCSSをシンプルに書こう (2012/5/23)
「LESS」はCSS初心者に向けた、シンプルなライブラリだ。「LESS」で、変数などのプログラミングの基礎的な考え方もCSSで学ぼう - 学校が世界一のデジタル環境になったら (2012/5/18)
授業はアーカイブに蓄積され、家からも見られる。家族が授業テーマのアイデアを出す。そんな姿が実現されるかもしれない - 1000万ドル調達も夢じゃないクラウドファウンディング (2012/5/15)
クラウドファンディングは、寄付型でも投資型でもない「購入型」が主流。商品を“開発する前に販売”して開発費用を集める逆転のシステムだ
|
|
