<?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>svgとjavascript</title><revhistory><revision><revnumber>17</revnumber><date>2013-01-09 01:15:41</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>16</revnumber><date>2012-12-18 00:32:17</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2012-12-17 02:02:37</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2012-12-17 01:58:15</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2012-12-17 01:57:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2012-12-17 01:43:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2012-12-17 01:31:06</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2012-12-17 01:09:52</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2012-12-17 01:08:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2012-12-17 01:07:59</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2012-12-17 01:01:08</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2012-12-16 13:14:53</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2012-12-16 13:13:41</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2012-12-16 13:03:08</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2012-12-16 13:00:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2012-12-16 12:41:56</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2012-12-16 12:39:08</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>svgとjavascript</title><para>HTML5ではHTMLファイル内にsvgがそのまま記述できます。 </para><itemizedlist><listitem override="none"><screen><![CDATA[<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>sample</title>
</head>
<body>
  <svg width="300" height="200">
  ...
  </svg>
</body>
</html>]]></screen></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>inkscapeのデータを利用する</title><para>inkscapeで描いて保存するとsvgファイルができます。 これを利用する方法を示します。 </para><para>inkscapeでは、用紙の左上隅が原点になっています。 </para><para>そのまま利用できるように、位置や大きさを合わせて描きます。 </para><itemizedlist><listitem override="none"><para>長方形ツールで枠を描き、表示される部分を確かめておくとよい。 </para></listitem><listitem override="none"><para><code>&lt;svg width=&quot;200&quot; height=&quot;150&quot;&gt;</code>と指定すると、この範囲が表示される。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/svg%E3%81%A8javascript?action=AttachFile&amp;do=get&amp;target=svg01.png"/></imageobject><textobject><phrase>svg01.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>スクリプトで用いる部品に名前をつけておきます。 </para><itemizedlist><listitem override="none"><para>部品を選び、右クリックし、プロパティを表示させます。 </para></listitem><listitem override="none"><para><emphasis role="strong">ID</emphasis>の部分に名前を入力します。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/svg%E3%81%A8javascript?action=AttachFile&amp;do=get&amp;target=svg02.png"/></imageobject><textobject><phrase>svg02.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>保存し、エディタで開くとこのようになっています。 </para><itemizedlist><listitem override="none"><para>そのままコピーして使えます。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/svg%E3%81%A8javascript?action=AttachFile&amp;do=get&amp;target=svg03.png"/></imageobject><textobject><phrase>svg03.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>指定箇所にそのままコピーするだけで動作しますが、 動作しないときはブラウザのエラー表示を見て、 対応する部分を削除します。 エラーが起こるのはinkscape特有の記述の箇所です。たとえば </para><itemizedlist><listitem override="none"><para><code>inkscape:</code>などで始まっている属性 </para></listitem><listitem override="none"><para>特別なstyle </para></listitem></itemizedlist><para>svgタグを <code>&lt;svg width=&quot;200&quot; height=&quot;150&quot;&gt;</code> に修正したときのブラウザでの表示例。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/svg%E3%81%A8javascript?action=AttachFile&amp;do=get&amp;target=svg04.png"/></imageobject><textobject><phrase>svg04.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>例</title><para><code>&lt;svg width=&quot;200&quot; height=&quot;150&quot;&gt;</code> として利用し、ユーザの入力により○×を表示します。 </para><section><title>inkscapeでの作業</title><para>表示範囲に合わせて絵を描きます。 </para><itemizedlist><listitem override="none"><para>○×はグループ化し、名前をつけておきます。<code>id=&quot;maru&quot;</code>としました </para></listitem><listitem override="none"><para>表示範囲外にありますが、javascriptで上下に移動する予定です。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/svg%E3%81%A8javascript?action=AttachFile&amp;do=get&amp;target=svg05.png"/></imageobject><textobject><phrase>svg05.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>表示範囲を確かめるための長方形は削除してから保存しました。 </para></section><section><title>htmlファイルの作成</title><para>エディタで作成します。 このような構成です。 </para><itemizedlist><listitem override="none"><screen><![CDATA[<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>sample</title>
<script type="text/javascript">
  スクリプトの記述
</script>
</head>
<body>
<div style="float:left">
  文字の記述
</div>
<svg width="200" height="150">
  図形の記述
</svg>
</body>
</html>]]></screen></listitem></itemizedlist></section><section><title>図形の記述部分</title><para>inkscapeで作成したファイルをエディタで開き、 &lt;svg&gt;と&lt;/svg&gt;の間の部分 (ほとんど全体)をコピーして図形の記述部分に入れます。 </para></section><section><title>文字の記述部分</title><para>問題を表示し、答えを入力するための記述をします。 </para><para>これを左に、絵を右に表示するため float:left の指定をしています。 </para><itemizedlist><listitem override="none"><screen><![CDATA[<div style="float:left">
  問題<br/>
  <input type="text" name="tx2" size="10" value="" /><br/>
  答え<br/>
  <input type="text" name="tx1" size="10" value="" id="tx1" /><br/>
  <input type="button" value="do" onclick="act()" /><br/>
</div>]]></screen></listitem></itemizedlist></section><section><title>スクリプトの記述部分</title><para>正解のとき○を表示するには <code>id=&quot;maru&quot;</code>の要素を上に150移動します。 </para><para>移動はこのように書けます。 </para><itemizedlist><listitem override="none"><screen><![CDATA[var obj = document.getElementById("maru");
obj.setAttribute("transform", "translate(0,-150)");]]></screen></listitem></itemizedlist><para>移動量を変えると×が表示できます。 </para></section><section><title>完成画面</title><para>正解のとき右手の上に○が表示されます。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/svg%E3%81%A8javascript?action=AttachFile&amp;do=get&amp;target=svg06.png"/></imageobject><textobject><phrase>svg06.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist></section></section></section></article>