html5 - canvas绘制圆环的问题

查看:440
本文介绍了html5 - canvas绘制圆环的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

用canvas绘制了一个圆环 然后在圆环上绘制了一个沿着圆环运动的原点

现在改变了圆环的半径 该如何写让圆点继续在圆环的轨迹上运动呢

 var canvas=document.getElementById('clock');
        var ctx=canvas.getContext('2d');
        // 绘制外环
        ctx.beginPath();
        ctx.arc(275,330,80,0,2*Math.PI,true);        
        ctx.strokeStyle='#8dc9f8';
        ctx.lineWidth='3'
        ctx.stroke();
        ctx.closePath();
    
        
        // 绘制动画需要重置幕布,所以重建一个canvas对象
        var pointer=document.getElementById('pointer');
        var ctxPoint=pointer.getContext('2d');
        function run(inputValue){
            var timer;
            var i=0;
            ctxPoint.translate(375,330);
            ctxPoint.fillStyle ='#fff';
            ctxPoint.strokeStyle='#fff';
            // 设置最终的值
            var finalValue=inputValue;
            var value=0;
            // 根据值的大小确定应该到达的位置
            if(finalValue<=3){
                value=(450-316.7)*0.225;
            }else if(finalValue<=6){
                value=(130)*0.9;
            }else if (finalValue <=9){
                value=(240)*0.9;    
            }
            else{
                value=finalValue<1?1:finalValue;
                //0刻度位置
                value=(value-700)*0.4+180;
            }
           
            ctxPoint.font='95px bold';
            ctxPoint.textAlign='center';
            ctxPoint.shadowColor='#fff';
            // 所有的动画事件
            function slideValue(){
                ctxPoint.translate(-275,-330);
                ctxPoint.clearRect(0,0,pointer.width,pointer.height);
                ctxPoint.translate(275,330);
                i++;
                // 绘制滚动元素
                ctxPoint.beginPath();
                ctxPoint.shadowBlur=30;
               
                ctxPoint.fillStyle='#8dc9f8';
                ctxPoint.fill();
                ctxPoint.arc(-180*Math.sin((i+60)/180*Math.PI),180*Math.cos((i+60)/180*Math.PI),3,0,2*Math.PI,true);
                ctxPoint.fillStyle='#fff';
                ctxPoint.fill();

解决方案

很容易啊,同时让点跟着半径变化就可以,就比如说圆的半径为r,点的坐标为:

x = r * cos(a);

y = r * sin(a);

点的运动只要改变角度a就行了

这篇关于html5 - canvas绘制圆环的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆