canvas擴散圓環


最近看了很多牛的動畫,想想自己的canvas的確很菜。

公式在那里,但是不是太會套。找demo發現都是很難的

於是找了個簡單的效果

圓環從中間擴散的效果

關鍵是 globalCompositeOperation合成操作,只留下重疊的部分

 

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圓形擴散</title>
    <style>
        body {
            overflow: hidden;
            background: #000;
        }
        body,
        html {
            height: 100%;
            width: 100%;
            margin: 0;
            padding: 0;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
</body>
<script type="text/javascript">
var oAnim=document.getElementById('canvas');
var context = oAnim.getContext("2d");
var radius=0

    function drawCircle(){
        context.beginPath();
        render(radius);
        context.arc(50,50,radius,0,Math.PI * 2);
        
        context.closePath();

        context.lineWidth=2;
        context.strokeStyle='rgba(250,250,50,1)';

        context.stroke();
        radius +=0.5;//每幀半徑增加0.5

            if(radius > 20){
                radius=0;
            }
    }

    function render(x) {
    //默認值為source-over,覆蓋原圖上面,效果像z-index:999
    var prev = context.globalCompositeOperation;

    //只顯示canvas上原圖像的重疊部分
    context.globalCompositeOperation = 'destination-in';

    //設置主canvas的繪制透明度,圓圈中間的淺黃色部分
    context.globalAlpha = 0.95;
 
    //這一步目的是將canvas上的圖像變的透明
    context.fillRect(0,0,40*x,40*x);

    //在原圖像上重疊新圖像
    context.globalCompositeOperation = prev;
    //下面代用的drawcricle方法,圓圈覆蓋在正方形上 }; //在主canvas上畫新圓 setInterval(function(){ drawCircle(); },20); </script> </html>

 


免責聲明!

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



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