收藏
回答

体验版 canvas真机环境,一直显示一个黑色加载中弹窗,求解决?

基础库版本号2.9.5

代码:

wml :

 <view class="mainTwo">

  <canvas    type="2d" id="myCanvas" class="secondView" >  </canvas

  </view>

 </view>


js:

    //获取第二个view宽高

       wx.createSelectorQuery().select('.secondView').boundingClientRect(res=> {

        this.setData({

        canvasHigth:res.height,  

        canvasWidth:res.width

      })

      }).exec(res=>{

        this.drawCanvas(this.data.canvasWidth,this.data.canvasHigth);

      });


drawCanvas: function (canvasWidth,canvasHigth){

    wx.createSelectorQuery().select('#myCanvas').fields({ node: true, size: true }).exec(res => {

        const canvas = res[0].node;

        const ctx = canvas.getContext('2d');

        canvas.width=canvasWidth;

        canvas.height=canvasHigth;

        let cicleCenterX=canvasWidth/8*5;

        let cicleCenterY=canvasHigth*4/6;

        

        //绘制字体

        ctx.beginPath();

        ctx.fillStyle='#ff8300';

        ctx.textAlign='center';

        ctx.font='normal normal 16px 微软雅黑';

        ctx.fillText('88,888元', cicleCenterX, cicleCenterY);

        ctx.stroke();

        ctx.closePath();


        //绘制背景底盘

        ctx.beginPath();

          //阴影

        ctx.shadowOffsetX='1';

        ctx.shadowOffsetY='2';

        ctx.shadowColor='#9e9e9e';

        ctx.shadowBlur='3';

        ctx.arc(cicleCenterX, cicleCenterY, cicleCenterX/2,  0.8* Math.PI, 2.2* Math.PI);

        //上色

        ctx.strokeStyle = '#888df5';

        ctx.lineWidth = 4;  

        ctx.setLineDash([0]);

      

        ctx.stroke();

        ctx.closePath();

        

        //绘制填充颜色部分

        ctx.beginPath();

        const grd = ctx.createLinearGradient(002000)

        grd.addColorStop(0'#fea75c');

        grd.addColorStop(1'#fea75c');

        ctx.arc(cicleCenterX, cicleCenterY, cicleCenterX/20.8* Math.PI, 1.6* Math.PI);

        ctx.strokeStyle = grd;

        ctx.lineWidth = 5;

        ctx.setLineDash([0]);

        ctx.stroke();

        ctx.closePath();


        });

  }

真机显示:




最后一次编辑于  2020-04-13
回答关注问题邀请回答
收藏

1 个回答

  • Wang
    Wang
    2020-04-14

    把res=>{

            this.drawCanvas(this.data.canvasWidth,this.data.canvasHigth);

          }

    放到this.setData({

            canvasHigth:res.height,  

            canvasWidth:res.width

          })

    的回调中去,再试试

    2020-04-14
    有用
    回复 1
    • 张晓锋
      张晓锋
      2020-04-14
      谢谢 问题找到了,不是canvas导致的。 是因为上级页面的showLoading 没关闭导致的!
      2020-04-14
      回复
登录 后发表内容
问题标签