国产精品美女久久久浪潮AV,国产精品三级一二三区,久久精品国产一区二区小说 ,依依成人影视国产精品,全部无卡免费的毛片在线看,日本一区二区三深夜不卡,国产精品女同一区二区久久,国产精品夜色一区二区三区

        微信小程序--實現canvas繪圖并且可以復盤回看

        2019-6-24    seo達人

        如果您想訂閱本博客內容,每天自動發到您的郵箱中, 請點這里

        目錄結構:



        index.wxml:

        <view class="canvasBox">
          <canvas canvas-id="myCanvas" class="myCanvas" catchtouchstart='canvasStart' catchtouchmove='canvasMoving'></canvas>
        </view>
        <view class="btn">
          <button type="warn" bindtap='drawPen'>畫筆</button>
          <button type="primary" bindtap='clearCanvas'>清空畫板</button>
          <button type="warn" bindtap='clearLine'>橡皮擦</button>
          <button style='background:#000;color:#fff;' bindtap="black">黑色</button>
          <button style='background:yellow;color:#000;' bindtap="yellow">黃色</button>
          <button style='background:red;color:#fff;' bindtap="red">紅色</button>
          <button style='background:blue;color:#fff;' bindtap="blue">藍色</button>
          <button style='background:green;color:#fff;' bindtap="green">綠色</button>
          <button type="warn" bindtap="startRecording">開始錄制</button>
          <button type="primary" bindtap='rePlay'>復盤</button>
          <button></button>
        </view>
        index.wxss:

        .canvasBox{
          position: relative;
          top:0;
          left:0;
          width: 750rpx;
          height:800rpx;
          background:#eee;
        }
        .canvasBox .myCanvas{
          width: 100%;
          height:100%;
          position: absolute;
          top:0;
          left:0;
        }
         
        .btn{
          width: 750rpx;
          display: flex;
          justify-content: space-between;
          flex-wrap: wrap;
        }
        .btn button{
          width: 180rpx;
          font-size: 24rpx;
        }
        index.js:

        //index.js
        //獲取應用實例
        import {hisData} from "../../utils/historyOperation.js";
        const app = getApp()
        var moveToX = 0, moveToY = 0, lineToX = 0, lineToY = 0;
        var context = null;
        var isStart = false;
        var date;
        var startDate;//開始時刻
        var penType = "drawPen";
        var colorStr = "#000";
        var operationType = "mapping";
        Page({
          data: {
            
          },
          
          canvasStart:function(e){
            var x = Math.floor(e.touches[0].clientX);
            var y = Math.floor(e.touches[0].clientY);
            date = new Date();
            moveToX = x;
            moveToY = y;
            operationType = "mapping";
            if(penType === "clearPen"){
              operationType = "clearLine";
            }
            if (isStart) {
              hisData.hisDataArr.push({
                time: date.getTime() - startDate,
                operation: operationType,
                lineArr: {
                  startX: moveToX,
                  startY: moveToY,
                  currentX: x,
                  currentY: y,
                  z: 1,
                  colorStr:colorStr
                }
              })
            }
          },
          //繪制線條
          canvasMoving:function(e){
            date = new Date();
            var x = Math.floor(e.changedTouches[0].clientX);
            var y = Math.floor(e.changedTouches[0].clientY);
            lineToX = x;
            lineToY = y;
            if(penType === "clearPen"){
              operationType = "clearLine";
              context.clearRect(x-12, y-12, 24, 24);
              context.draw(true);
            }else{
              operationType = "mapping";
              context.setStrokeStyle(colorStr);
              context.moveTo(moveToX, moveToY);
              context.lineTo(lineToX, lineToY);
            }
            if (isStart) {
              hisData.hisDataArr.push({
                time: date.getTime() - startDate,
                operation: operationType,
                lineArr: {
                  startX: moveToX,
                  startY: moveToY,
                  currentX: lineToX,
                  currentY: lineToY,
                  z: 1,
                  colorStr: colorStr
                }
              })
            }
            moveToX = lineToX;
            moveToY = lineToY;
            context.stroke();
            context.draw(true);
          },
          
          clearCanvas:function(){
            context.clearRect(0,0,375,400);
            context.draw(true);
            date = new Date();//記錄當前操作時刻
            operationType = "clearCanvas";
            if(isStart){
              hisData.hisDataArr.push({
                time: date.getTime() - startDate,
                operation: operationType,
                lineArr: {
                  startX: -1,
                  startY: -1,
                  currentX: -1,
                  currentY: -1,
                  z: 0,
                  colorStr: colorStr
                }
              })
            }
          },
          
          drawPen:function(){
            penType = "drawPen";
          },
          clearLine:function(){
            penType = "clearPen";
          },
          black:function(){
            colorStr = "#000";
          },
          yellow: function () {
            colorStr = "yellow";
          },
          red: function () {
            colorStr = "red";
          },
          blue: function () {
            colorStr = "blue";
          },
          green: function () {
            colorStr = "green";
          },
          startRecording:function(){
            isStart = true;
            date = new Date();
            startDate = date.getTime();
          },
          rePlay:function(){
            wx.navigateTo({
              url: '../replay/replay',
            })
          },
          onLoad: function () {
            isStart = false;
            context = wx.createCanvasContext('myCanvas');
            context.beginPath();
            context.setStrokeStyle('#000');
            context.setLineWidth(5);
            context.setLineCap('round');
            context.setLineJoin('round');
          }
        })
        historyOperation.js:該文件用來保存歷史操作,以便復盤

        const hisData = {
          hisDataArr:[
            {
              time:0,//操作時間
              /**
               * 操作類型
               * 繪圖:mapping
               * 拖動球員:moveplayer
               * 清除畫布:clearCanvas
               * 橡皮擦:clearLine
               */
              operation:"mapping",//操作類型
              /**
               * 繪制路徑
               * startX:開始x坐標
               * startY:開y縱坐標
               * currentX:目標位置的 x 坐標
               * currentY:目標位置的 y 坐標
               * z:1代表畫線時鼠標處于move狀態,0代表處于松開狀態
               * colorStr:線的填充顏色
               */
              lineArr: {    //繪制路徑
                startX:0,
                startY:0,
                currentX:0,
                currentY:0,
                z:0,
                colorStr:"#000"
              }
            }
          ]
        };
         
        export {hisData};
        復盤:

        reply.wxml:

        <!--pages/replay/replay.wxml-->
        <view class="replayBox">
          <canvas canvas-id='myCanvas' class="myCanvas"></canvas>
        </view>
        <button type="warn" bindtap="start">開始</button>
        reply.wxss:

        /* pages/replay/replay.wxss */
        .replayBox{
          position:relative;
          width: 750rpx;
          height:800rpx;
          background: #eee;
        }
         
        .replayBox .myCanvas{
          position: absolute;
          top:0;
          left:0;
          width:100%;
          height:100%;
        }
         
        reply.js:

        // pages/replay/replay.js
        import {hisData} from "../../utils/historyOperation.js";
        var startDate;
        var date;
        var curTime;
        var context = null;
        var timer = null;
        Page({
         
          /**
           * 頁面的初始數據
           */
          data: {
         
          },
          start:function(){
            context.clearRect(0, 0, 375, 400);
            clearInterval(timer);
            date = new Date();
            startDate = date.getTime();
            var i = 0;
            var that = this;
            var len = hisData.hisDataArr.length;
            timer = setInterval(function(){
              date = new Date();
              curTime = date.getTime() - startDate;
              if (curTime >= hisData.hisDataArr[i].time){
                switch (hisData.hisDataArr[i].operation) {
                  case "mapping":
                    context.setStrokeStyle(hisData.hisDataArr[i].lineArr.colorStr);
                    context.moveTo(hisData.hisDataArr[i].lineArr.startX, hisData.hisDataArr[i].lineArr.startY);
                    context.lineTo(hisData.hisDataArr[i].lineArr.currentX, hisData.hisDataArr[i].lineArr.currentY);
                    context.stroke();
                    context.draw(true);
                    break;
                  case "clearCanvas":
                    context.clearRect(0, 0, 375, 400);
                    context.draw(true);
                    break;
                  case "clearLine":
                    context.clearRect(hisData.hisDataArr[i].lineArr.currentX-12, hisData.hisDataArr[i].lineArr.currentY-12, 24, 24);
                    context.draw(true);
                    break;
                }
                i++;
              }
              if(i >= len){
                clearInterval(timer);
              }
            },2);
          },
          /**
           * 生命周期函數--監聽頁面加載
           */
          onLoad: function (options) {
            context = wx.createCanvasContext('myCanvas');
            context.beginPath();
            context.setStrokeStyle('#000');
            context.setLineWidth(3);
            context.setLineCap('round');
            context.setLineJoin('round');
          }
        })
        藍藍設計m.shtzxx.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、網站建設 平面設計服務

        日歷

        鏈接

        個人資料

        藍藍設計的小編 http://m.shtzxx.cn

        存檔

        主站蜘蛛池模板: 大竹县| 天堂网www在线资源网| 辛集市| 强奷乱码中文字幕| 日韩欧美中文字幕公布| 日本国产成人国产在线播放| 金湖县| 国产精品多人p群无码| 久久久婷婷成人综合激情| 欧美国产日韩久久mv| 亚洲欧洲av一区二区久久| 精品国产乱子伦一区二区三区| 始兴县| 2021国产精品国产精华| 99久热re在线精品视频| 富婆性猛交ⅹxxx乱大交| 深圳市| 天堂网在线.www天堂在线资源| 性高朝久久久久久久久久| 国产精品偷窥熟女精品视频| 黑人粗大猛烈进出高潮视频| 国产成人无码一区二区在线播放 | 财经| 乱人伦人妻精品一区二区| 人妻一本久道久久综合久久鬼色 | 在线综合亚洲欧洲综合网站| 无人视频免费观看免费视频| 国产xxxx色视频在线观看| 人妻av无码专区| 孙吴县| 亚洲av无码久久精品色欲| 国产女人高潮叫床视频| 国产一区二区精品久久| 亚洲人成网站18禁止| 奇米四色网| 国产欧美日韩一区二区加勒比| 亚洲中文字幕在线观看| 69成人网| 亚洲性av网站| 午夜理论欧美理论片| 无码人妻精品一区二区三区不卡|