博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序_小球弹啊弹(画布的简单使用)
阅读量:4085 次
发布时间:2019-05-25

本文共 1457 字,大约阅读时间需要 4 分钟。

看了下小程序的画布功能,简单的使用了一下,用蹩脚的逻辑做了个 “弹啊弹,弹走鱼尾纹的小球”,一起来看下吧。过程不重要主要是画布的使用哦。(本来想传gif的来着,后来发现不会传,就传个图片吧,想看的自己下载下来玩呦)

先上图,后上代码了:

js:

[javascript]   
 
  1. var winWidth = 0  
  2. var winHeight = 0  
  3. var diameter = 10  
  4. var time = 0  
  5.   
  6. Page({  
  7.   data:{  
  8.     numX:1,  
  9.     numY:1  
  10.   },  
  11.   xy:{  
  12.     //小球的xy坐标  
  13.     x:10,  
  14.     y:10  
  15.   },  
  16.   
  17.   onLoad:function(options){  
  18.     //进来先获取手机的屏幕宽度和高度  
  19.     wx.getSystemInfo({  
  20.       success: function(res) {  
  21.         console.log(res)  
  22.         winHeight = res.windowHeight;  
  23.         winWidth = res.windowWidth;  
  24.       }  
  25.     })  
  26.   },  
  27.   
  28.   onReady:function(){  
  29.      //循环滚动小球  
  30.      for(var i=0;i<1;i++){  
  31.         //随机一个滚动的速度  
  32.         time = (1+Math.random()*10)  
  33.         setInterval(this.move,time);  
  34.         console.log(time)  
  35.      }  
  36.   },  
  37.   move(){  
  38.     //x   
  39.     if(this.data.numX == 1){  
  40.       this.xy.x++  
  41.     }else{  
  42.       this.xy.x--  
  43.     }  
  44.   
  45.     //判断x轴的状态  
  46.     if(this.xy.x == winWidth-diameter){  
  47.        this.data.numX=2  
  48.     }  
  49.     if(this.xy.x == diameter){  
  50.        this.data.numX=1  
  51.     }  
  52.   
  53.     //y  
  54.     if(this.data.numY == 1){  
  55.        this.xy.y++  
  56.     }else{  
  57.        this.xy.y--  
  58.     }  
  59.   
  60.     //判断y轴的状态  
  61.     if(this.xy.y == 400-diameter){  
  62.        this.data.numY=2  
  63.     }  
  64.     if(this.xy.y == diameter){  
  65.        this.data.numY=1  
  66.     }  
  67.   
  68.     //画图  
  69.     this.ballMove(this.xy.x,this.xy.y);  
  70.   },  
  71.   
  72.   
  73.   ballMove(x,y){  
  74.     // 使用 wx.createContext 获取绘图上下文 context  
  75.     var context = wx.createContext()  
  76.     // context.setShadow(0,1,6,'#000000')//阴影效果  
  77.     context.setFillStyle("#FF4500")//球的颜色  
  78.     context.setLineWidth(2)  
  79.     context.arc(x, y, diameter, 0, 2 * Math.PI, true)  
  80.     context.fill()  
  81.   
  82.     // 调用 wx.drawCanvas,通过 canvasId 指定在哪张画布上绘制,通过 actions 指定绘制行为  
  83.     wx.drawCanvas({  
  84.       canvasId: 'ball',  
  85.       actions: context.getActions() // 获取绘图动作数组  
  86.     })  
  87.   }  
  88. })  

wxml:

[html]   
 
  1. <view>  
  2.     <canvas canvas-id="ball"></canvas>  
  3. </view>  

demo下载:

感谢观看,学以致用更感谢~

你可能感兴趣的文章
TypeScript for React (Native) 进阶
查看>>
React 和 ReactNative 的渲染机制/ ReactNative 与原生之间的通信 / 如何自定义封装原生组件/RN中的多线程
查看>>
JavaScript实现DOM树的深度优先遍历和广度优先遍历
查看>>
webpack4 中的 React 全家桶配置指南,实战!
查看>>
react 设置代理(proxy) 实现跨域请求
查看>>
通过试题理解JavaScript
查看>>
webpack的面试题总结
查看>>
实践这一次,彻底搞懂浏览器缓存机制
查看>>
Koa2教程(常用中间件篇)
查看>>
React Hooks 完全指南
查看>>
React16常用api解析以及原理剖析
查看>>
教你发布你npm包
查看>>
nvm 和 nrm 的安装与使用
查看>>
React Hooks 一步到位
查看>>
React Redux常见问题总结
查看>>
前端 DSL 实践指南
查看>>
ReactNative: 自定义ReactNative API组件
查看>>
cookie
查看>>
总结vue知识体系之实用技巧
查看>>
PM2 入门
查看>>