Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序|实现简单动态画布

微信小程序|实现简单动态画布

作者头像
算法与编程之美
发布于 2020-08-20 07:10:36
发布于 2020-08-20 07:10:36
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

问题描述

大家都玩过游戏,有没有想过游戏中的人物是怎么动起来的?人物是由很多的图形构成的,我们需要画出这些图形然后再赋予时间,就可以让他动起来。那么如何在小程序上让简单的图动起来呢?

解决方案

实现动图需要用画布组件,也就是canvas画布。首先调用canvas组件,然后再对图形的属性进行设置:位置,线条,形状,颜色,时间等。如果要制作较复杂的图形还需要计算图形的起始和终止位置。下面通过一个圆的例子来介绍画布。

(1)在wxml中调用canvas组件

绑定手指点击事件bindtouchstart="btnclick"

图3.1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<view>

<canvas style="width: 100%; height: 400px; background:yellow;" canvas-id="firstCanvas"bindtouchstart="btnclick" >

// bindtouchstart="btnclick" 手指触摸动作开始

</canvas>

</view>

表3.1

(2)在js中对图形属性进行设置

设置图形的起始角度、终止角度、半径、方向和时间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Page({

  canvasIdErrorCallback: function (e) {

    console.error(e.detail.errMsg)

  },

 //起点从(0,0)开始

  pos: {

    x: 0,

    y: 0

  },

 

  onReady: function (e) {

    this.draw()

  },

    //每50ms进行一次

  btnclick: function () {

    setInterval(this.draw, 50)

  },

//向x++,y++方向移动

  draw: function () {

    this.pos.x++;

    this.pos.y++;

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

    var context = wx.createCanvasContext('firstCanvas')

 

    //半径为60,起始角度0°,终止角度2π,顺时针绘制

    context.arc(this.pos.x, this.pos.y, 50, 0, 2 * Math.PI, false)

 

    context.stroke()

    context.draw()

  }

})

表3.2

图3.2

【注】这是一个静态截屏

结语

如果要画一个复杂的图形需要计算每个图形的坐标。用画布画图最重要的就是就是设置图形的属性。上面只是简单介绍了一个动态的圆,如果是要画一个动态的游戏人物是很复杂的需要建模,精确计算位置,所以一个光鲜的游戏人物背后是会花费很多心血的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
小程序 canvas 生成海报 一次搞掂
需要注意的是,目前的canvas可以简单分为两种。一种是传统网页中的canvas,一种是小程序中的canvas。两者的功能是完全一样的。只是标签的样式,和 api 略有区别而已。目前我们主要讲解小程序中的canvas。
万少
2025/02/11
3850
小程序 canvas 生成海报 一次搞掂
微信小程序|简单易上手的画板功能
大部分安卓用户的手机里是没有自带画板功能的,而在近期网课盛行之时,一个随手可用的手写面板,无论是在写笔记方面,还是在辅助授课方面,一个小画板就体现出了很大的作用。那么这个功能应该如何来实现呢?
算法与编程之美
2020/04/15
2.2K0
微信小程序官方组件展示之画布canvas源码
以下将展示微信小程序之画布canvas源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。
软件事业部
2022/10/28
1K0
小程序海报,极简的实现方式
需要注意的是,目前的canvas可以简单分为两种。一种是传统网页中的canvas,一种是小程序中的canvas。两者的功能是完全一样的。只是标签的样式,和 api 略有区别而已。目前我们主要讲解小程序中的canvas。
万少
2025/02/11
3140
小程序海报,极简的实现方式
全栈开发工程师微信小程序-中
每个open-type都有默认的url属性,open-type为navigateBack时,url无效,delta的属性表示为反退,默认是1.
达达前端
2019/07/03
9700
全栈开发工程师微信小程序-中
【愚公系列】《微信小程序与云开发从入门到实践》022-canvas(画布)组件及应用
随着移动互联网的发展,视觉内容在用户体验中的重要性日益凸显。微信小程序的canvas(画布)组件为开发者提供了强大的绘图能力,使得在小程序中自由创作和展示各种图形、动画和图像成为可能。无论是创建游戏、展示创意图表,还是实现个性化的用户界面,canvas组件都能带来无限的创作空间和灵活性。
愚公搬代码
2025/01/18
4080
微信小程序|Canvas实现绘画直线
小程序中,我们如果想实现一个绘画功能,就要先从认识canvas这个组件开始。那么先从一个简单的绘画直线功能开始介绍画布功能吧。
算法与编程之美
2020/09/16
3.5K0
微信小程序|Canvas实现绘画直线
wx-caman——基于 CamanJS 的微信小程序 Canvas 像素级滤镜处理库
做这个项目的初衷是希望能够开发一款不依赖服务端而纯通过客户端渲染为图片添加滤镜的小程序。但是由于微信小程序中的 canvas 组件与 DOM Canvas 元素有较大差异,因此传统的 Canvas 处理库几乎无法在小程序中使用。在调研了一些传统浏览器端的项目后,我发现 CamanJS 的功能比较完善,同时也比较容易对微信小程序进行适配。在阅读完毕 CamanJS 源码(顺便学习了一下 CoffeeScript)以及学习了小程序的 canvas 组件的条条框框之后,wx-caman 就诞生了。wx-caman 由 CamanJS 封装而来,基于 ES6 进行了重写,并针对微信小程序进行了适配。其使用基本与 CamanJS 保持一致,同时剔除了无关功能,能够对小程序中的 canvas 进行像素级别的图像滤镜处理。
逆葵
2019/04/25
1.3K0
微信小程序开发:canvas 多行文字换行(二)
微信小程序开发中,canvas画出一篇文章,由于句子长短不一,画起来确实是费劲,查了不少资料,总结一下:
田超
2018/06/13
2.4K0
微信小程序----手势锁详解
设计思路流程图 1、全局常量 constructor(page,opts){ // 初始化全局常量数据 this.page = page; this.width = opts.wid
Rattenking
2021/02/01
8180
微信小程序----手势锁详解
微信小程序----手势图案锁屏
参考 H5lock 效果图 WXML <view class="container"> <view class="reset" bindtap="resetPwd">重置密码</view>
Rattenking
2021/02/01
1.2K0
微信小程序----手势图案锁屏
微信小程序内拖动图片实现移动、放大、旋转
最近接到一个任务,在微信小程序内拖动图片组件实现移动、放大、旋转,并记录这些图片的移动位置,放大比例,旋转角度,在一个画布上生成一张图片,最后保存到手机相册。
超级小可爱
2023/02/20
2.5K0
微信小程序写字板功能
功能参考来源 <view class="write"> <canvas class="write_main" canvas-id="sign" bindtouchmove="move" bindtouchstart="start" bindtouchend="end" bindtouchcancel="cancel" bindlongtap="tap" disable-scroll="true" binderror="error"></canvas> <view class="write_t
明知山
2021/06/21
9950
微信小程序写字板功能
微信小程序开发实战(17):用画布画一张笑脸
小程序的画布允许绘制基础的图形,如直线、圆等。画布需要使用<canvas>标签,例如,下面的布局代码使用了<canvas>标签定义了一个300*200的画布。
蒙娜丽宁
2020/08/11
1.2K0
微信小程序开发实战(17):用画布画一张笑脸
看微信小程序 wx.canvasToTempFilePath 方法之巨坑的解决之道
当然这个项目是可以用的,但是生成不了图片,打开 tempFilePath直接报错,发现了什么原因了吗?
全科
2018/08/15
4.6K0
前端-微信小程序之圆形进度条
(3)一个canvas,使用绝对定位作为背景,canvas-id="canvasProgressbg"
grain先森
2019/03/29
1.6K0
前端-微信小程序之圆形进度条
【零基础微信小程序】基于百度大脑人像分割的证件照换底色小程序实战开发
通过小程序配合百度的人体分割接口进行简单的照片渲染,本期做一个小工具,对学生党、工作人员、打印店铺以及涉及到求职简历办公等需求的人员都很有用,这个项目由于一些原因不再做维护了,于是打算出个教程将证件照小程序分享给大家,这里采用百度AI接口是因为现在网上开源的py脚本对边缘计算不是很优秀,会有很多模糊点没办法处理,识别人体的轮廓范围,与背景进行分离,适用于拍照背景替换、照片合成、身体特效等场景。输入正常人像图片,返回分割后的二值结果图、灰度图、透明背景的人像图(png格式);并输出画面中的人数、人体坐标信息,可基于此对图片进行过滤、筛选。百度在这方便做得很好,细致化到发丝,并且免费!!
德宏大魔王
2023/08/08
8480
【零基础微信小程序】基于百度大脑人像分割的证件照换底色小程序实战开发
微信小程序滑块验证方法
如图: 滑块验证组件 puzzleVerify目录 index.wxml <!-- 滑动验证弹窗 --> <view class="slide_model" wx:if="{{slidebel}}"> <view class="slide_wrapper"> <!-- 拼图图片部分 --> <view class="canvas_img" id="canvas_img"> <!-- 背景图片 --> <canvas style="width: {{canvas_width}
江一铭
2022/06/17
1.9K0
微信小程序滑块验证方法
JavaScript 编程精解 中文第三版 十七、在画布上绘图
浏览器为我们提供了多种绘图方式。最简单的方式是用样式来规定普通 DOM 对象的位置和颜色。就像在上一章中那个游戏展示的,我们可以使用这种方式实现很多功能。我们可以为节点添加半透明的背景图片,来获得我们希望的节点外观。我们也可以使用transform样式来旋转或倾斜节点。
ApacheCN_飞龙
2022/12/01
4.3K0
JavaScript 编程精解 中文第三版 十七、在画布上绘图
三步走:把Scribble Diffusion AI 画图搬进app!
最近AIGC 简直是杀疯了,领导动不动就让我们在APP 里引入大语言模型,引入AI画图……说搞就搞!本期基于最近在app 里引入AI画图小程序的操作,给大家做一波实践分享。
海岛船长加西亚
2023/04/11
1.4K1
三步走:把Scribble Diffusion AI 画图搬进app!
推荐阅读
相关推荐
小程序 canvas 生成海报 一次搞掂
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验