<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>アニメーション</title><revhistory><revision><revnumber>2</revnumber><date>2008-08-22 04:52:41</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2008-08-22 04:45:53</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>アニメーション</title><itemizedlist><listitem override="none"><para>animateMotion </para></listitem><listitem override="none"><para>animate </para></listitem><listitem override="none"><para>animateColor </para></listitem><listitem override="none"><para>set </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>パスに沿った動き</title><para>物体をパスにそって動かすにはつぎのように書きます。 </para><itemizedlist><listitem override="none"><screen><![CDATA[ <use xlink:href="#動かす物体">
     <animateMotion>
        <mpath xlink:href="#動きのパス"/>
     </animateMotion>
 </use>]]></screen></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><para> animateMotionの属性 </para><para>begin </para><itemizedlist><listitem override="none"><para>アニメーションを始める時間を指定します。例えば </para></listitem><listitem override="none"><para>begin=&quot;0s&quot; </para></listitem></itemizedlist><para>dur </para><itemizedlist><listitem override="none"><para>アニメーションの長さを指定します。例えば </para></listitem><listitem override="none"><para>dur=&quot;5s&quot; </para></listitem></itemizedlist><para>fill </para><itemizedlist><listitem override="none"><para>アニメーションが終わったあと、物体の表示をどうするか指定します。 </para></listitem><listitem override="none"><para>指定しないと、useで指定した場所に描かれます。 </para></listitem><listitem override="none"><para>fill=&quot;freeze&quot;とすると最後の場所で止まります。 </para></listitem></itemizedlist><para>repeatCount </para><itemizedlist><listitem override="none"><para>繰り返しの回数を指定します。例えば </para></listitem><listitem override="none"><para>repeatCount=&quot;10&quot; </para></listitem><listitem override="none"><para>限りなく繰り返すには repeatCount=&quot;indefinite&quot; とします。 </para></listitem></itemizedlist><para>rotate </para><itemizedlist><listitem override="none"><para>動かす物体の向きを指定します。 </para></listitem><listitem override="none"><para>指定しないと、もとの向きのままで動きます。 </para></listitem><listitem override="none"><para>パスの向きにしたがって向きを変えるには </para></listitem><listitem override="none"><para>rotate=&quot;auto&quot; </para></listitem><listitem override="none"><para>とします。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><para> アニメーションの例 </para><para>青い円をパスに沿って動かすサンプルです。 </para><itemizedlist><listitem override="none"><screen><![CDATA[  <defs>
  <path id="path1" d="M 100 100 L 300 100 L 300 300 L 100 300 Z" />
  <g id="maru">
    <circle cx="0" cy="0" r="10" fill="blue" />
  </g>
  </defs>
 
  <use xlink:href="#maru" x="0" y="0">
    <animateMotion begin="0s" dur="4s">
       <mpath xlink:href="#path1"/>
    </animateMotion>
  </use>]]></screen></listitem></itemizedlist><para>&lt;defs&gt;内に２つの定義があります。 </para><para>１番目は&lt;path&gt;で形は４角形です。 どのように動くかを&lt;path&gt;で記述します。 </para><para>２番目は&lt;g&gt;で形は青い円です。 動かす物体です。複雑な形でもかまいません。 &lt;g&gt;を使ってまとめ、名前をつけています。 </para><para>&lt;/defs&gt;より後ろにあるのが実際に表示される部分です。 ここには&lt;use&gt;が１つだけあります。 </para><para>今回の&lt;use&gt;はいつもの単独タグではなく、開始タグと終了タグがあります。 動かす物体はuseの属性として指定します。ここでは </para><itemizedlist><listitem override="none"><para>xlink:href=&quot;#maru&quot; x=&quot;0&quot; y=&quot;0&quot; </para></listitem></itemizedlist><para>となっています。 </para><para>&lt;use&gt;の内側に&lt;animateMotion&gt;が入っています。 これがアニメーションの指定です。 </para><itemizedlist><listitem override="none"><para>begin=&quot;0s&quot; dur=&quot;4s&quot; </para></listitem></itemizedlist><para>で時間の指定を０秒目から４秒目としています。 </para><para>さらにその内側にある </para><itemizedlist><listitem override="none"><para>&lt;mpath xlink:href=&quot;#path1&quot;/&gt; </para></listitem></itemizedlist><para>でパスを参照し、動きの線を指定しています。 </para><para>この&lt;use&gt;全体の意味は 「図形maruを０秒目から４秒目の間に、path1にそって動かす」 になります。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>いろいろなアニメーション</title><para>動きだけでなく、大きさを変えたり、向きを変えるなどいろいろなアニメーションが可能です。 </para><para>サンプル１ </para><itemizedlist><listitem override="none"><screen><![CDATA[ <rect x="10" y="10" width="200" height="20">
     <animate attributeName="width" attributeType="XML"
                   from="200" to="20"
                   begin="0s" dur="5s" />
 </rect>]]></screen></listitem></itemizedlist><para>長方形の幅を２００から２０までだんだん小さく変化させるものです。 attributeNameでどの属性を変化させるのか指定し、 値はfromとtoで、時間はbeginとdurで指定します。 </para><para>サンプル２ </para><itemizedlist><listitem override="none"><screen><![CDATA[ <rect x="10" y="10" width="200" height="20">
     <animate attributeName="width" attributeType="XML"
                   from="200" to="20" begin="0s" dur="5s" />
     <animate attributeName="height" attributeType=XML"
                   from="50" to="100" begin="0s" dur="10s" />
 </rect>]]></screen></listitem></itemizedlist><para>animateを２つ使って、widthとheightを別々に変化させています。 </para><para>サンプル３ </para><itemizedlist><listitem override="none"><screen><![CDATA[ <text x="50" y="50" style="visibility:hidden;">
      <set attributeName="visibility" attributeType="CSS"
             to="visible"
             begin="5s" dur="1s" fill="freeze" />
     Hello
 </text>]]></screen></listitem></itemizedlist><para>一定時間後にHelloと表示します。 animateではなくsetを使って、属性の値を変えています。 </para><para>サンプル４ </para><itemizedlist><listitem override="none"><screen><![CDATA[ <circle cx="50" cy="50" r="30" style="fill:#fff; stroke:#000;">
      <animateColor attributeName="fill"
              begin="5s" dur="3s" from="#880" to="#8ff" fill="freeze" />
      <animateColor attributeName="stroke"
              begin="5s" dur="3s" form="#088" to="#000" fill="freeze" />
 </circle>]]></screen></listitem></itemizedlist><para>animateColorを２つ使って、fillとstrokeを変化させています。 </para><para>サンプル５ </para><itemizedlist><listitem override="none"><screen><![CDATA[ <use xlink:href="#name" transform="translate(0,100)">
      <animateTransform attributeType="XML"
              attributeName="transform" type="scale"
              from="1" to="2 5"
              begin="0s" dur="5s" />
 </use>]]></screen></listitem></itemizedlist><para>５秒後にscale(2 5)に拡大されます。 </para></section></section></article>