Gresan SVG ライブラリには、SVG ドキュメントを移動、反転、回転、拡大/縮小し、オフスクリーンに描画する機能があります。この機能を利用して、個々の SVG ドキュメントを1つのスプライトとして捕らえることにより、スプライトアニメーションを行うことができます。
上記の手法は、SVG ドキュメント全体の移動、回転などを意味します。では、SVG ドキュメント内の任意要素の属性を変えたい時はどうすれば良いのでしょうか?例えば、SVG ドキュメント内に記述されたボールの色を赤から緑に変えたい場合などが、これに当たります。Gresan SVG ライブラリでは、現在のところ SVG アニメーション機能はサポートされておりませんが、その代わりに DOM(注1)の編集機能がサポートされています。この機能を利用すれば、SVG ドキュメントに対して、あらゆる属性の動的な変更が可能です。つまり、DOM の編集機能を使用すると、SVG アニメーション機能と同等のことができてしまう、という面白い結果が得られるのです。
具体的な手順を追って見ましょう。
1.まず前準備として、SVGドキュメントの DOM 属性を変更したい要素には、id 属性を付加しておきます。これは、後に DOM 属性を変更する際、その要素を簡単に特定できるようにするためです。
2.SVG ドキュメントをロードします。(gsvg_load_file など)
3.アニメーションの各フレーム毎に以下を行います。
・DOM 編集機能を使用して、SVG DOM に対し適切な属性変更を行います。
・SVG ドキュメントを適切な位置、回転、スケールなどを指定して、オフ
スクリーンに描画します。
(gsvg_trans_blend_ofs, gsvg_trans_export_ofs などの API を利用)
・合成されたオフスクリーンを画面に転送します。
4.終了の際に、SVG ドキュメントを解放します。
このように非常に簡単な手順で SVG スプライトアニメーションの作成が可能だということが、ご理解いただけると思います。
(注1) DOM(Document Object Model)
XML、HTML 文書を操作するための API(Application Programing Interface)です。
DOM では、これらの文書がタグに相当するオブジェクトのツリー構造で表現され、
これらのオブジェクトへの操作が可能になります。
SVG も XML 形式で記述されていますので、SVG DOM としての操作が可能になります。
|