更新记录
1.1.5(2023-06-22)
下载此版本
- 修复已知bug
- gravity单词拼写错误修改
- demo兼容微信小程序canvas 2d
1.1.4(2023-04-01)
下载此版本
起步太麻烦?交给我
- 新增 Confetti 类,即new即用,无需其他新的对象,快餐式使用,动画结束就销毁对象。
1.1.2(2023-03-20)
下载此版本
· 修复uniapp-h5端传入原生Context2d时报错 draw bug
· 请在使用前 npm i confetti-ts-canvas 安装最新版
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
app-vue |
× |
√ |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
√ |
√ |
√ |
√ |
√ |
× |
√ |
√ |
× |
:zap:Confetti-ts-canvas
canvas中奖庆祝礼花喷发/五彩纸屑/🎉/特效
请在运行Demo之前 npm i confetti-ts-canvas 安装该库
特性
- 1.基于canvas 2d,无依赖任何第三方插件,安装简单。
- 2.基于typescript开发,支持es6和amd与ts。
- 3.本质就是一个jssdk支持各大浏览器H5 PC与M端,uniapp,微信小程序,uniapp app等,只要是js或者ts都支持。
- 4.使用简单,支持自定义形状,效果显著,动画流畅60帧
效果图
如果有帮到您,给个小星星,我会把它做得更好。 https://github.com/AK1118/Confetti-js-canvas/
cdn引入
<script src="https://cdn.jsdelivr.net/npm/confetti-ts-canvas@1.1.4/dist/index.esm.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/confetti-ts-canvas@1.1.4/dist/index.amd.min.js"></script>
npm安装
npm i confetti-ts-canvas
快速使用方式,来一次快餐式的体验
import {
Confetti
} from 'confetti-ts-canvas';
//确保已经存在canvas标签在页面内
const canvas= document.querySelector("canvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
const g= canvas.getContext("2d");
new Confetti({
paint:g,
canvasWidth:canvas.width,
canvasHeight:canvas.height,
}).run();
更多使用方法,引入
import {
ConfettiEjector,
CanvasRender,
CustomShape
} from 'confetti-ts-canvas';
初始化
const g=uni.createCanvasContext("myCanvas");
const canvasRender=new CanvasRender();
canvasRender.init(
//必填 CanvasContext
g,
//可选填入
{
width:canvas.width,
height:canvas.height,
},
//以下参数全部可选填入
{
onFinished(){
console.log("完成")
},
displayFps:true,
grivaty:.5,
}
);
使用
const pao = new ConfettiEjector(canvasRender, {
limitAngle: [225, 315],//喷发角度区间[-∞,+∞]
count: 100,//喷发纸片数量
});
const boom = pao.create({
x: Math.random()*(this.canvasSize.width*.5),
y:Math.random()*(this.canvasSize.height*.5),//喷发位置
clampforce: [20, 60],//喷发力度
radius: 10,//纸片大小
});
pao.fire(boom);
可能会遇到的问题
- demo短时间内点击多个按钮闪屏。每个按钮的CanvasRender实例不同,但调用的是同一个canvas,所以会出现闪屏。不无担心,业务上不会在短时间内调用多个CanvasRender,如果有,销毁上一个动画再调用也可。
- 详细使用方法请参考demo:https://ext.dcloud.net.cn/plugin?id=10530