资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

微信小程序如何实现会动的指南针

本篇内容主要讲解“微信小程序如何实现会动的指南针”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序如何实现会动的指南针”吧!

福安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

创建/添加图像资源

首先用Word画,然后转换成png。

微信小程序如何实现会动的指南针

接下来在小程序工程中添加images目录,将png文件拷贝到该目录中。

index.wxml

 

 

 

   {{angle}}

 

添加一个名为compassCanvas,宽和高都是300px的canvas.

index.js

//logs.js

Page({

 data: {

   angle: '--',  

 },

 //指南针描画

 drawCompass: function (direction) {

   var center_x = 150

   var center_y = 150

   // 使用 wx.createContext 获取绘图上下文 context

   var context = wx.createCanvasContext('compassCanvas')

   //根据角度旋转坐标系

   context.translate(center_x, center_y);

   context.rotate(-direction / 180 * Math.PI);

   context.translate(-center_x, -center_y);

   //描画方向转盘

   context.drawImage('../../images/compass-1.png', 0, 0,

                     center_x * 2, center_y * 2)

   //恢复坐标系

   context.translate(center_x, center_y);

   context.rotate(direction / 180 * Math.PI);

   context.translate(-center_x, -center_y);

   //描画指针。

   context.beginPath()

   context.setLineWidth(5)

   context.setStrokeStyle('red')

   context.moveTo(140, 112)

   context.lineTo(150, 60)

   context.lineTo(160, 112)

   context.closePath()

   context.stroke()

   context.draw()

 },


 //事件处理函数

 onLoad: function () {

   var that = this;

   wx.onCompassChange(function (res) {

     //保留1位小数

     var direction = res.direction.toFixed(1) + '°';

     that.setData({ angle: direction})

     that.drawCompass(res.direction);

   }); 

 },

})

drawCompass函数

首先通过以canvas中心为轴旋转坐标系,旋转角度角度是负的罗盘角度。这里包含了一个角度到弧度的转换。接下来描画指南针表盘就简单了。

在这个小程序中,表盘转而指针不动,所以首先将坐标系再转回来,最后描画指针。

onLoad函数

在onCompassChange的处理函数中,除了设定angle数据之外,同时调用的上面的drawCompass函数。

到此,相信大家对“微信小程序如何实现会动的指南针”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


标题名称:微信小程序如何实现会动的指南针
网站地址:http://cdkjz.cn/article/gjiego.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220