收藏
回答

使用<canvas/>标签做一个刮刮乐的样式效果,模拟器和真机效果不一样?

 <!-- 刮刮乐-->

  <view class="scratch-card">

  

    <!-- 添加积分提示 -->

    <view class="notice">

      每次抽奖将消耗<span class="expend">{{obts.needpoint}}积分</span>,祝您好运!

    </view>

   <canvas id="myCanvas" canvas-id="canvas" style="display:block;height:75%;width:92%;top:12%;left:4%;position:relative;"  bindtouchstart="onTouchStart" bindtouchmove="onTouchMove" bindtouchend="onTouchEnd"/>

    <!-- 其他元素如背景图片等 -->

     <view class="container">

     <text class="prizeText">{{prizeText}}</text>

     </view>

  </view>initCanvas() {

        console.log('初始化画布');

        const systemInfo = wx.getSystemInfoSync(); // 获取系统信息

        this.canvasWidth = systemInfo.windowWidth; // 根据实际窗口宽度设置

        this.canvasHeight = systemInfo.windowHeight; // 根据实际窗口高度设置(或自定义)

       console.log('窗口宽度',systemInfo.windowWidth);

       console.log('窗口高度',systemInfo.windowHeight);

        this.ctx = wx.createCanvasContext('canvas', this);

        if (!this.ctx) {

            console.error("Canvas 上下文创建失败");

            return;

        }

        console.log('Canvas 上下文:', this.ctx);


        // 设置初始背景色

        this.ctx.setFillStyle('#ADADAD');

        this.ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight);

        console.log('填充矩形完成');


        // 文本绘制循环

        for (let i = 0; i < 20; i++) {

            this.ctx.rotate((-45 * Math.PI) / 180);

            this.ctx.font = "16px Arial";

            this.ctx.fillStyle = "#EEEFEF";

            this.ctx.fillText('刮一刮,有惊喜 刮一刮,有惊喜 刮一刮,有惊喜 刮一刮,有惊喜', -200, i * 60);

            this.ctx.rotate((45 * Math.PI) / 180);

            console.log(`文本绘制循环 ${i} 完成`);

        }


        setTimeout(() => {

            this.ctx.draw(true);     

            console.log('draw 方法调用完成');

        }, 0);

    }模拟器里画布的样式都是在,效果也能实现,但是在真机中效果就没有了,但是能在控制台中定位位置,而是没有效果

回答关注问题邀请回答
收藏

1 个回答

  • 🌝
    🌝
    03-03

    我用的是wepy框架


    03-03
    有用
    回复 1
    • 🌝
      🌝
      03-03
      已解决
      03-03
      回复
登录 后发表内容