正方形の回転 †正方形をマウスの動きで回転させるサンプルを作成してみました。 以下がソースの内容です。 <?xml version="1.0" standalone="no"?> <!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" version="1.1" width="600px" height="400px" onmousedown="MsDown(evt)" onmouseup="MsUp()" onmousemove="MsMove(evt)" onmouseout="MsUp()" > <script type="text/ecmascript"><![CDATA[ var moveX = 0; var moveY = 0; var bMs = false; var xPos = 0; var yPos = 0; function MsDown( e ) { bMs = true; xPos = e.screenX; yPos = e.screenY; } function MsUp( ) { bMs = false; moveX = 0; moveY = 0; } function MsMove( e ) { if (bMs == true) { var element = e ? e.target : window.event.srcElement; if ( element.nodeName == "svg" ) { moveX = e.screenX - xPos; xPos = e.screenX; moveY = e.screenY - yPos; yPos = e.screenY; var txtAngle = element.getElementById("angle").textContent; var work = txtAngle.substring(0, txtAngle.length - 1); var intAngle = parseInt( work ) + moveX; if ( 360 <= intAngle ) { intAngle = intAngle - 360; } else if ( intAngle <= -360 ) { intAngle = intAngle + 360; } txtAngle = intAngle + "°"; element.getElementById("angle").textContent=txtAngle; intAngle = 0 - intAngle; var transform = "rotate(" + intAngle + ",150,150)" var svgobj = element.getElementById("global"); set_transform( svgobj, transform); } } return; } function set_transform ( svgobj, value ) { svgobj.setAttribute ('transform', value); } ]]></script> <desc>Square Rotation</desc> <rect id="canvas" x="1" y="0" width="598" height="399" stroke="black" stroke-width="0.5" fill="none"/> <text id="angle" x="0" y="20" text-anchor="right">0°</text> <g id="global"> <rect id="square" x="50" y="50" width="200" height="200" stroke="black" stroke-width="1" fill="none"/> <path stroke="black" stroke-width="1" fill="none" d="M 150 150 L 250 50"/> </g> </svg> サンプル †SVGが使えるブラウザーだと次に正方形が表示されます。viewBox内でマウスを左右に動かして正方形を回転してみて下さい。 Last-modified: 2014-03-11 (火) 01:58:42 (3859d)
|