SVG 旋轉圖形實例


本實例展示如何在SVG中畫出一個正方形並使之旋轉。運行結果如下圖所示:

 

在文本框中輸入時間間隔,單位是毫秒。點擊Start按鈕,藍色方塊就會開始轉動,每個時間間隔變化一度。變換的角度在下面的Angle處顯示。

 

實現代碼如下,技術要點已經詳細注釋。

 

<!DOCTYPE html>
<?xml version="1.0" ?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <!-- <svg>標簽聲明一個svg畫布長40px寬40px -->
    <svg width="40px" height="40px" style="border:1px solid black">
        <!-- <g>標簽可以包含多個圖形合成一個組,並對組里的圖形進行統一處理。transform="translate(20,20)"表示在<g>里的所有圖形都會向下向右平移20px -->
        <g transform="translate(20,20)" id="myImage">
            <!-- <rect>可以在畫布上畫出一個長方形,此長方形長寬都是20px,圖形中心在(-10,-10)處,但經過<g>的變換會落在(10,10)處。顏色是藍色 -->
            <rect id="mySquare" x="-10" y="-10" width="20" height="20" fill="blue"  />
        </g>
    </svg>
    <br/>
    <input id="speed" type="text" value="10" />
    <button id="zoom" onclick="startAnimation();">Start</button>
    <p id="angle"></p>
    <script>
        var squareShape;
        function startAnimation() {
            //squareShape是要轉動的那個正方形
            squareShape = document.getElementById("mySquare");
            //初始轉角為0
            squareShape.currentTheta = 0;
            //setInterval函數可以無限循環執行某個函數,第一個參數是要執行的函數名,第二個參數是時間間隔,單位毫秒。
            setInterval("animateImage()",speed.value);
            
        }
        //轉動正方形
        function animateImage() {
            //正方形的transform屬性是對圖形進行變換,rotate(x)表示對圖形旋轉x度
            squareShape.setAttribute("transform", "rotate(" + squareShape.currentTheta + ")");
            squareShape.currentTheta += 1;
            //顯示旋轉的度數
            document.getElementById("angle").innerText = "Angle:" + squareShape.currentTheta;
        }
    </script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM