ロケットの打(う)ち上(あ)げ
JavaScript のプログラムから SVG の画像を動かす準備が整ったので、今回は、いよいよアニメーションを実現します。
2015年に書いた SVG のコードではロケットを動かすために、下記の要領で SVG の animate 要素を使いました。
<use x="208" y="154" xlink:href="#g2">
<animate attributeName="y" begin="0s"
dur="3s" from="154" to="78" />
<animate attributeName="y" begin="3s"
dur="9s" from="78" to="78" />
<animate attributeName="y" begin="12s"
dur="3s" from="78" to="154" />
<animateTransform attributeName="transform" begin="3s"
dur="3s" type="rotate" from="0 300 214" to="-90 300 214" />
<animateTransform attributeName="transform" begin="6s"
dur="3s" type="rotate" from="-90 300 214" to="-90 300 214" />
<animateTransform attributeName="transform" begin="9s"
dur="3s" type="rotate" from="-90 300 214" to="0 300 214" />
</use>
今回は SVG.js の animate() を使って以下のようなコードを書きました。
//<use xlink:href="#rocket" x="?" y="?"/>
var use3 = draw.use(rocket).move(x, y);
use3.animate({duration: 2000}).move(x, y / 2);
use3.animate({delay: 1000, duration: 2000}).move(x, y);
プログラムでアニメーションを作ることにより、変数を使ったり、計算したりできることがメリットになりますが、出力される SVG のコード自体は下記のように静止画になります。
<use xlink:href="#rocket" x="207" y="155"/>
詳細についてはブログ「JavaScript (53) ロケット打ち上げ」をご覧ください。
この記事が気に入ったらサポートをしてみませんか?