前端动画渲染引擎pixi.js系列(7)粒子容器、遮罩层和滤镜的应用
一.粒子容器
粒子容器PIXI.particles.ParticleContainer是一个能容纳大量显示精灵的容器,其具有快速、高效的特点,支持容期内显示对象的位置变化、大小缩放和角度旋转;然而出于性能的考虑,同时也屏蔽了容器内显示对象如基色变化、遮罩层等特效功能。粒子容器继承于PIXI.Container。创建方法如下:
new PIXI.particles.ParticleContainer(maxSize, properties, batchSize);
该函数中,maxSize表示最大容纳量;properties表示设置粒子容器的属性;batchSize表示每批渲染对象的数量,默认值与maxSize一样。
创建粒子容器的完整参考代码如下:
//创建粒子容器
var sprites = new PIXI.particles.ParticleContainer(10000, {scale: true,position: true,rotation: true,uvs: true,alpha: true
});
app.stage.addChild(sprites);//创建粒子
var totalSprites = app.renderer instanceof PIXI.WebGLRenderer ? 10000 : 100;
for(var i = 0; i < totalSprites; i++) {var dude = PIXI.Sprite.fromImage('../img/bunny.png');//设置中心点dude.anchor.set(0.5);//设置不同缩放值dude.scale.set(0.8 + Math.random() * 0.3);// 随机出现位置dude.x = Math.random() * app.renderer.width;dude.y = Math.random() * app.renderer.height;// 设置不同的颜色dude.tint = Math.random() * 0x808080;//添加到粒子容器中sprites.addChild(dude);
}
效果图:
此案例中快速渲染了10000个显示精灵,然后完全不会感觉到卡顿情况的发生。
二.遮罩层
遮罩层,是指可以将与遮罩层相链接的图形中的图像遮盖起来。用户可以将多个层组合放在一个遮罩层下,以创建出多样的效果。在显示精灵中,遮罩层属性用mask表示,遮罩层mask的赋值参数类型为PIXI.Graphics和PIXI.Sprite,设置遮罩层的对象只有遮罩层区域会显示出来。
遮罩层应用的完整参考代码如下:
app.stage.interactive = true;
//建立显示精灵1
var bGrotate = PIXI.Sprite.fromImage('../img/BGrotate.jpg');
bGrotate.anchor.x = 0.5;
bGrotate.anchor.y = 0.5;
bGrotate.position.x = app.renderer.width / 2;
bGrotate.position.y = app.renderer.height / 2;
//建立显示精灵2
var bgFront = PIXI.Sprite.fromImage('../img/SceneRotate.jpg');
bgFront.anchor.x = 0.5;
bgFront.anchor.y = 0.5;
bgFront.position.x = app.renderer.width / 2;
bgFront.position.y = app.renderer.height / 2;
//建立显示容器
var container = new PIXI.Container();
container.addChild(bGrotate);
container.addChild(bgFront);
app.stage.addChild(container);//建立画笔
var thing = new PIXI.Graphics();
app.stage.addChild(thing);
thing.position.x = app.renderer.width / 2;
thing.position.y = app.renderer.height / 2;
thing.clear();
thing.beginFill(0x8bc5ff, 0.4);
thing.drawCircle(0, 0, 0);
thing.lineStyle(0);
//设置遮罩层属性后,将会隐藏,只有赋值该属性的对象区域能显示
bgFront.mask = thing;var r = 0;
app.ticker.add(function() {r += 10;thing.clear();thing.beginFill(0x8bc5ff, 0.4);thing.drawCircle(0, 0, r);thing.lineStyle(0);
});
效果图:图SceneRotate.jpg(绿色叶子)由圆心向外扩展。
三.滤镜
滤镜主要是用来实现图像的各种特殊效果。在显示对象中用属性filters表示,要移除滤镜只需把此属性设为null即可。系统提供的滤镜有:
BlurFilter
BlurXFilter
BlurYFilter
ColorMatrixFilter
DisplacementFilter
FXAAFilter
NoiseFilter
VoidFilter
详细用法可以查看pixi的api文档。
模糊滤镜应用的完整参考代码如下:
var bg = PIXI.Sprite.fromImage('../img/BGrotate.jpg');
bg.width = app.renderer.width;
bg.height = app.renderer.height;
app.stage.addChild(bg);
var littleDudes = PIXI.Sprite.fromImage('../img/panda.png');
littleDudes.position.x = 100;
littleDudes.position.y = 100;
app.stage.addChild(littleDudes);
var blurFilter1 = new PIXI.filters.BlurFilter();
littleDudes.filters = [blurFilter1];
var count = 0;app.ticker.add(function() {count += 0.01;var blurAmount = Math.cos(count);blurFilter1.blur = 20 * (blurAmount);
});
效果图:
前端动画渲染引擎pixi.js系列(7)粒子容器、遮罩层和滤镜的应用相关推荐
- 前端动画渲染引擎pixi.js系列(5)Text文本和Graphics画笔工具
一.文本 文本对象PIXI.Text是指创建一行或多行文字,可以使用'\n'来实现换行,文本对象PIXI.Text的继承关系是: PIXI.Text->PIXI.Sprite 文本PIXI.Te ...
- H5 2D渲染引擎—Pixi.js 精灵的位置、大小、旋转、移动
根据 H5 2D渲染引擎-Pixi.js 渲染器.舞台和精灵的创建,创建精灵(不做其他设置)并添加到渲染器后,精灵默认的位置是在渲染器的左上角(x=0,y=0),大小为原图片大小. 定位 可以通过改变 ...
- 风一样的HTML5 2D渲染引擎Pixi.js——真正意义的跨平台开发工具
摘要:Pixi.js是一款超快的开源HTML5 2D渲染引擎,由于其使用了带有Canvas回调功能的WebGL,开发者不需要了解WebGL便可以感受到硬件加速的强大力量.Pixi.js作为JavaSc ...
- 【前端】浅谈浏览器内核:渲染引擎、JS引擎
浏览器内核是什么? 简而言之,浏览器内核就是把我们编写的代码转换为页面的中控件. 虽然现在大家谈起浏览器内核时,多指代渲染引擎(Rendering engine 或 layout engineer). ...
- 浏览器内核-渲染引擎、js引擎
一个完整的浏览器包含浏览器内核和浏览器的外壳(shell).浏览器核心--内核分成两部分:渲染引擎和js引擎.由于js引擎越来越独立,内核就倾向于只指渲染引擎. 1 浏览器组成结构 浏览器一般由七个模 ...
- 浏览器渲染引擎和JS引擎简介
一.定义 浏览器内核分成两部分:渲染引擎和JS引擎. 由于JS引擎越来越独立,浏览器内核就倾向于单指渲染引擎. 渲染引擎:是一种对解析HTML.CSS等进行解析并将其显示在页面上的工具. JS引擎:读 ...
- webGL、webGPU、封装、渲染引擎 three.js、游戏引擎,定位是游戏开发,在前面的渲染引擎基础上,还提供了骨骼动画、物理引擎、AI、GUI 等功能,以及可视化编辑器来设计关卡,支撑大型游戏
https://zhuanlan.zhihu.com/p/162878354 如何选择 WebGL 框架和引擎? 知道得越多,不知道的就更多了 数据可视化Sugar-百度智能云 cloud.ba ...
- arcgis js 4 使用pixi.js 构建火焰粒子
我们来用pixi.js 来构建火焰粒子 首先数据结构定义 let option = { renderer: { type: "simple", symbol: { startCol ...
- 前端渲染引擎doT.js解析
背景 前端渲染有很多框架,而且形式和内容在不断发生变化.这些演变的背后是设计模式的变化,而归根到底是功能划分逻辑的演变:MVC->MVP->MVVM(忽略最早混在一起的写法,那不称为模式) ...
- HTML+CSS+JS实现 ❤️九宫格图片悬停遮罩层特效❤️
最新文章
- sklearn决策树模型机器学习参数解释很详细中文
- Java 8 - 收集器Collectors_分组groupingBy
- [ZZ88]送给即将毕业奔三的男人们的16条忠告
- NEO从源码分析看网络通信
- 日积月累-从细节做起
- 初级php工程师应该具备什么,一名合格的PHP工程师需要掌握的知识结构
- 如何更改mysql服务名_技术小百科 |【云小课】数据复制服务如何实现对象名映射...
- python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中
- lane是什么意思_什么是Trunk?Trunk详解
- php 内部 邮件,php电子邮件形式内部服务器错误
- SQLServer:执行计划
- 4*4矩阵式键盘识别技术c语言程序,4×4矩阵式键盘识别技术
- 盘点14个因安全事故引咎辞职的高管领导
- DEDE网站安全设置防挂马教程
- python中、函数定义可以不包括以下一对圆括号_在python中,参数在函数定义的圆括号对内指定,用分号分割...
- 数据库规范设计说明书
- MATEBOOK E 2019 安装linux
- Android音乐播放器开发(2)—登录
- 我们该如何理解矩估计???
- 晚上11:45点 ,你进入睡眠状态了吗?