为了账号安全,请及时绑定邮箱和手机立即绑定

用canvas和JS制作的一个小球做圆周运动

标签:
Html5 JavaScript

学习了下canvas,用canvas做了一个小例子
输入代码

<canvas id="canvas" width="600" height="600"></canvas>
window.onload=function(){
        var canvas=document.querySelector("#canvas"),
            ctx=canvas.getContext("2d"),//获取绘画环境
            ball=new Ball(),//实例化构造方法
            speed=0.1,
            range=100,
            angle=0;
            ball.x=0;
            ball.y=0,
            widths=canvas.width/2,
            heights=canvas.height/2;
            (function drawFrame(){
                //requestAnimationFrame可以监听到每一个像素的运动效果,浏览器定义的运动的事件
                window.requestAnimationFrame(drawFrame,canvas);
                //ctx.clearRect(0,0,canvas.width,canvas.height);
                ball.y=heights+range*Math.sin(angle);
                ball.x=widths+range*Math.cos(angle);
                angle+=speed;
                ball.draw(ctx);
            })();   
    }
        function Ball(radius,color){
            radius=radius  40;
            color=color  randomColor();//color  '#f00';
            this.radius=radius;
            this.color=color;
            this.lineWidth=1;
            this.scaleX=1;
            this.scaleY=1;
            this.rotation=0;
        }
        Ball.prototype.draw=function(ctx){
            //保存
            ctx.save();
            //效果
            ctx.translate(this.x,this.y);//映射位置
            ctx.rotate(this.totation);//旋转
            ctx.scale(this.scaleX,this.scaleY);//缩放效果
            //绘画
            ctx.lineWidth=this.lineWidth;
            ctx.fillStyle=randomColor();//this.color;
            ctx.beginPath();
            ctx.arc(0,0,this.radius,0,Math.PI*2,true);
            ctx.closePath();//关闭路径
            ctx.fill();//实现填充
            if(this.lineWidth>0){
                ctx.stroke();
            }
            //释放
            ctx.restore();
        }
        function randomColor(){
            var rgb='#';
            for(var i=0;i<3;i++){
                rgb+=xl(parseInt(Math.random()*256).toString(16));
            }
            function xl(r){
                if(r.length==1) r='0'+r;
                return r;
            }
            return rgb;
        }```
点击查看更多内容
7人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消