ホームページ >WeChat アプレット >ミニプログラム開発 >WeChat アプレットは円形のプログレス バーのサンプル共有を実装します

WeChat アプレットは円形のプログレス バーのサンプル共有を実装します

小云云
小云云オリジナル
2018-02-09 14:39:056401ブラウズ

この記事では主に、WeChat アプレットに円形のプログレス バーを実装する例を紹介します。お役に立てれば幸いです。

アプレットで循環カウントダウンを使用し、レンダリングします:
WeChat アプレットは円形のプログレス バーのサンプル共有を実装します

アイデア

  1. 2 つのキャンバスを使用します。1 つは背景リング、もう 1 つはカラー リングです。

  2. setInterval を使用して、色付きの円を段階的に描画します。

解決策

最初のステップは構造を記述することです

ボックスは2つのキャンバスとテキストボックスをラップします

ボックスは親として相対位置を使用し、フレックスレイアウトとセンタリングを使用します
キャンバスは次のように絶対位置を使用します。背景、canvasProgressbg"
進行状況バーとして相対位置を使用する別のキャンバス、canvasProgress"
コードは次のとおりです:

// wxml
 <view class="container">
     <view class=&#39;progress_box&#39;>
        <canvas class="progress_bg"   canvas-id="canvasProgressbg">  </canvas> 
        <canvas class="progress_canvas"   canvas-id="canvasProgress">  </canvas> 
        <view class="progress_text">
            <view class="progress_dot"></view> 
            <text class=&#39;progress_info&#39;> {{progress_txt}}</text>
        </view>     
    </view>
</view>
// wxss
.progress_box{
  position: relative;
  width:220px;
  height: 220px;  
// 这里的宽高是必须大于等于canvas圆环的直径 否则绘制到盒子外面就看不见了
// 一开始设置 width:440rpx; height:440rpx; 发现 在360X640分辨率的设备,下绘制的圆环跑盒子外去了
// 小程序使用rpx单位适配 ,但是canvas绘制的是px单位的。所以只能用px单位绘制的圆环在盒子内显示
  display: flex;  
  align-items: center;
  justify-content: center;
  background-color: #eee;
}
.progress_bg{
  position: absolute;
    width:220px;
  height: 220px; 
}
.progress_canvas{ 
  width:220px;
  height: 220px; 
} 
.progress_text{ 
  position: absolute; 
  display: flex;  
  align-items: center;
  justify-content: center
}
.progress_info{   
  font-size: 36rpx;
  padding-left: 16rpx;
  letter-spacing: 2rpx
} 
.progress_dot{
  width:16rpx;
  height: 16rpx;  
  border-radius: 50%;
  background-color: #fb9126;
}
データ バインディングの 2 番目のステップ

できる限りwxml から見ると、A データ progress_txt を使用するので、次のように js にデータを設定します:

 data: {
    progress_txt: '正在匹配中...',  
  },
キャンバス描画の 3 番目のステップ

敲黑板,划重点

1. まず背景を描画します

  1. 関数drawProgressbgをjsでカプセル化します。円を描くとキャンバスが円を描きます

  2. onReadyでこの関数を実行します

アプレットのキャンバスコンポーネントはH5のキャンバスとは少し異なります。ドキュメントを確認してください。コードは次のとおりです

drawProgressbg: function(){
    // 使用 wx.createContext 获取绘图上下文 context
    var ctx = wx.createCanvasContext('canvasProgressbg')
    ctx.setLineWidth(4);// 设置圆环的宽度
    ctx.setStrokeStyle('#20183b'); // 设置圆环的颜色
    ctx.setLineCap('round') // 设置圆环端点的形状
    ctx.beginPath();//开始一个新的路径
    ctx.arc(110, 110, 100, 0, 2 * Math.PI, false);
    //设置一个原点(100,100),半径为90的圆的路径到当前路径
    ctx.stroke();//对当前路径进行描边
    ctx.draw();
  },
 onReady: function () {
    this.drawProgressbg(); 
  },
次のように効果を見てください:


WeChat アプレットは円形のプログレス バーのサンプル共有を実装します

2. 色の描画 Circle

  1. は、js で円を描画するための関数drawCircle をカプセル化し、

  2. はこの関数を onReady で実行します。ええ

this.drawCircle(0.5) 効果は次のとおりです: thisdrawCircle(1) の効果は次のとおりです: 3. タイマーを設定します
this.drawCircle(2) 効果は次のとおりです:
WeChat アプレットは円形のプログレス バーのサンプル共有を実装します WeChat アプレットは円形のプログレス バーのサンプル共有を実装します WeChat アプレットは円形のプログレス バーのサンプル共有を実装します

jsのデータにカウンターカウント、ステップ、タイマーを設定します

  1. タイマー関数 countInterval をカプセル化するjs では、

  2. onReady でこの関数を実行します。

  3.   drawCircle: function (step){  
        var context = wx.createCanvasContext('canvasProgress');
          // 设置渐变
          var gradient = context.createLinearGradient(200, 100, 100, 200);
          gradient.addColorStop("0", "#2661DD");
          gradient.addColorStop("0.5", "#40ED94");
          gradient.addColorStop("1.0", "#5956CC");
          
          context.setLineWidth(10);
          context.setStrokeStyle(gradient);
          context.setLineCap('round')
          context.beginPath(); 
          // 参数step 为绘制的圆环周长,从0到2为一周 。 -Math.PI / 2 将起始角设在12点钟位置 ,结束角 通过改变 step 的值确定
          context.arc(110, 110, 100, -Math.PI / 2, step * Math.PI - Math.PI / 2, false);
          context.stroke(); 
          context.draw() 
      },
     onReady: function () {
         this.drawProgressbg(); 
         this.drawCircle(2) 
      },

    最終的な効果


関連する推奨事項: WeChat アプレットは円形のプログレス バーのサンプル共有を実装します

キャンバス上に円形のプログレス バー アニメーションを実装する方法の例

WeChatアプレットに円形プログレスバーを実装する方法へ

円形プログレスバーのおすすめ基本入門チュートリアル


以上がWeChat アプレットは円形のプログレス バーのサンプル共有を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。