SVG もういっちょう
SVG もういっちょういきます。
Opeara9 でもいけてますか? 🙂 > Sa・Ga さん (コメントありがとうございました)
昨日の chameleon さんからコメントいただきましたとおり、Scalable Vector Graphics です。
ベクターグラフィックを XML で標準的に表現したもので、Web でも使うことが出来ます。 いまのところ、Firefox / Opera 系でサポートされている模様。 IE でも adobe のプラグインいれるとみれるみたいですね。
DOM で JavaScript からダイナミックHTML みたいに属性値をいじると、アニメーションできたりインタラクティブに操作をしたりできます。 上はタイマーでアニメーションさせている様子です。 (ただ、あんまり描画パフォーマンスはよくないかも。 いや、気のせいかも 🙂
SVG をだせる、Inkscapeの出力ファイルや各種ドキュメントを参考にしていろいろやってみているのですが、む、むずい。。
コネクタはないのかな・・・。
XML だすだけでベクターグラフィックが描けるのでスクリプト言語と相性が良さそうです。 もうちょっとがんばってみます。。
だましだましやっていたので、かなり恥ずかしいものですが上のソースおいておきます。 興味がある方はあそんでみてください。 🙂
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE
- svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
- "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
- <svg
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- onload="animation(evt)">
- <!-- アニメ用の JavaScript -->
- <script language="javascript1.2">
- <![CDATA[
- var svgdoc = null;
- var rotate1 = 0;
- var rotate2 = 0;
- var rotate3 = 0;
- /* onLoad のイベントハンドルしてドキュメント取得/タイマ開始 */
- function animation(evt) {
- target = evt.target
- svgdoc = target.ownerDocument;
- next_frame();
- setInterval('next_frame()', 20);
- }
- /* 属性取って変更するとアニメする */
- function next_frame() {
- var rect1 = svgdoc.getElementById('rect1');
- var rect2 = svgdoc.getElementById('rect2');
- var rect3 = svgdoc.getElementById('rect3');
- ro1 = "rotate(" + rotate1 + ",200,150)";
- ro2 = "rotate(" + rotate2 + ",200,250)";
- ro3 = "rotate(" + rotate3 + ",250,250)";
- rect1.setAttribute("transform", ro1);
- rect2.setAttribute("transform", ro2);
- rect3.setAttribute("transform", ro3);
- rotate1++;
- rotate2--;
- rotate3++;
- }
- ]]>
- </script>
- <!-- 図形の定義 -->
- <g fill-opacity="0.7" stroke="black" stroke-width="4px">
- <rect id="rect1" transform="" x="150" y="100" width="150" height="150" fill="red" />
- <rect id="rect2" transform="" x="100" y="200" width="150" height="150" fill="blue" />
- <rect id="rect3" transform="" x="200" y="200" width="150" height="150" fill="green" />
- </g>
- </svg>
追記。
正直いまは反省している・・・。
↑これは Opera だとだめなようです…。
From: Sa・Ga - 2006/12/3 Sunday (Comment)
Opera 9でもいけてるようです。動いているようです。
# 当然ながら携帯電話はダメですね。
# あと、IE7でもダメっぽい・・・。
コメントが遅くなってしまい申し訳ありませんでした。夕方から新宿のヨドバシキャメラに出かけていたものでして。
やっぱりWiiもPS3も売り切れでした。
私の乏しい想像力では使い道を思い浮かべることができませんが、絵描き歌とかかけるかな?(音はどっから持ってくるんだ)
From: ひろまさ - 2006/12/3 Sunday (Comment)
Sa・Ga さん、ありがとうございます。 😀
動的生成の使い方だと、グラフとかの描画ですかね~。 AJAX とからめても面白そうです。 インタラクティブ絵描き歌いいですね。
単純に動きと描画だけなら、Flash に一日の長か…という感想を今のところ持っています。 もうちょっといじってみよう…。
From: Sa・Ga - 2006/12/4 Monday (Comment)
おろ? うちのOpera 9では、なにやら左上方向に向かってアニメーションしているように見えます。
はっ! そうだその手があったんだ!
さらに応用して、電車のダイヤグラムとか書けそうですね(笑)。俺はやらないけど。
Flashと違ってカネがかからない(と思う)点はいいですね。
ご指摘のようにスクリプト言語との親和性も良さそうですが、IEで動かないというのはちょっと。
From: ぼの - 2006/12/4 Monday (Comment)
わーん、ワープくん(仮名)が動いてるー!o(*’-‘*)o
Flash より軽いのでしょうか。絵にもよるのかな?
From: ひろまさ - 2006/12/5 Tuesday (Comment)
おお、Opera 9 だと大丈夫でしたか。 Opera 8 だったのかな…。 ありがとうございます。
電車のダイアグラムすごく良いですね!
いろいろやってみたのですが、今のところ SVGの描画パフォーマンスは各ブラウザの実装上あまりよくなさそうなので(遅い…)、Flash の代替えよりも Acrobat の代替えとして考えるといろいろ面白いこと出来そうです。 XML だすだけで帳票なんかつくれますね。 ベクターなので印刷にも耐えられます。 WP 的には管理画面でつかえるかな~といった印象です。
ちなみに、ちゃんと確認していませんが Adobe Acrobat がはいっていると IE でもみれる…、ような気がします。(もう一台のPCでは一部みれました)
> わーん、ワープくん(仮名)が動いてるー!o(*’-‘*)o
えへ、気がついてくれて良かったです。 😉