canvas-8searchLight4.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <canvas id="canvas" style="margin:0 auto;border:1px #ddd solid">
        The current browser does not support Canvas, can replace the browser a try!
    </canvas>

    <script>

        var searchLight = {
            x : 400,
            y : 400,
            radius : 150,
            vx : Math.random() * 5   10,
            vy : Math.random() * 5   10
        }

        var isIncrease = true;

        window.onload = function(){
            var canvas = document.getElementById('canvas');

            canvas.width = 1024;
            canvas.height = 768;

            if(canvas.getContext('2d')){
                var context = canvas.getContext('2d');

                setInterval(function(){    
                        draw(context);
                        update(canvas.width,canvas.height);
                },40);

            }else{
                alert('当前游览器不支持Canvas,请更换游览器后再试!');
            }
        }

        function draw(cxt){
            var canvas = cxt.canvas;
            cxt.clearRect(0,0,canvas.width,canvas.height);

            cxt.save();

                cxt.beginPath();
                    cxt.fillStyle = "#000";
                    cxt.fillRect(0,0,canvas.width,canvas.height)
                cxt.closePath();

                cxt.save();
                    cxt.translate(searchLight.x,searchLight.y);
                    cxt.scale(searchLight.radius,searchLight.radius);
                    starPath(cxt);
                    cxt.fillStyle = "#fff";
                    cxt.fill();
                cxt.restore();
                    cxt.clip();

                cxt.font = "bold 150px Arial";
                cxt.textAlign = "center";
                cxt.textBaseline = "middle";
                cxt.fillStyle = "#058";
                cxt.fillText("Canvas",canvas.width/2,canvas.height/4);
                cxt.fillText("Canvas",canvas.width/2,canvas.height/2);
                cxt.fillText("Canvas",canvas.width/2,canvas.height * 3/4);
            cxt.restore();
        }


        function starPath(cxt){
        
            cxt.beginPath();
            for(var i=0;i<5;i  ){
                cxt.lineTo(Math.cos( (18 i*72) / 180 * Math.PI ),
                                -Math.sin( (18 i*72) / 180 * Math.PI ));
                cxt.lineTo(Math.cos( (54 i*72) / 180 * Math.PI )*0.5,
                                -Math.sin( (54 i*72) / 180 * Math.PI )*0.5);
            }
            cxt.closePath();
        }


        function update(canvasWidth,canvasHeight){
            // rot  = 1;

            // searchLight.x  = searchLight.vx;
            // searchLight.y  = searchLight.vy;

            // if(searchLight.x - searchLight.radius <= 0){
            //     searchLight.vx = -searchLight.vx;
            //     searchLight.x = searchLight.radius;
            // }

            // if(searchLight.x   searchLight.radius >= canvasWidth){
            //     searchLight.vx = -searchLight.vx;
            //     searchLight.x = canvasWidth - searchLight.radius;
            // }

            // if(searchLight.y - searchLight.radius <= 0){
            //     searchLight.vy = -searchLight.vy;
            //     searchLight.y = searchLight.radius;
            // }

            // if(searchLight.y   searchLight.radius >= canvasHeight){
            //     searchLight.vy = -searchLight.vy;
            //     searchLight.y = canvasHeight - searchLight.radius;
            // }

            if(searchLight.radius > 700)
                isIncrease = false;
            else if(searchLight.radius < 150)
                isIncrease = true;

            if(isIncrease)
                searchLight.radius  = 5;
            else 
                searchLight.radius -= 5;
        }

    </script>
</body>
</html>

 


更多专业前端知识,请上 【猿2048】www.mk2048.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值