不管全世界所有人怎么说,我都认为自己的感受才是正确的。无论别人怎么看,我绝不打乱自己的节奏。喜欢的事自然可以坚持,不喜欢的怎么也长久不了。
Pixijs安装和使用简介
Pixijs 安装
由于Pixijs是一个js库,所以安装方法跟一般的js库一样:
<script src="pixi.min.js"></script>
或者通过npm\yarn安装
npm install pixi.js
yarn add pixi.js
安装之后,在控制台的console中,会出现Pixijs特有的log提示,看到了这个,就表示项目中使用到了Pixijs。
PixiJS 4.4.5 - * canvas * http://www.pixijs.com/ ♥♥♥
Pixijs 使用
Pixijs使用方法非常简单,最基本的代码,就是:
let app = new PIXI.Application({width: 256, height: 256});
...
document.body.appendChild(app.view);
这里调用PIXI.Application方法,创建一个宽度和高度都为256的场景。PIXI.Application方法调用过后,会返回一个canvas对象,把该对象加入到dom当中,一个简单的PIXI场景就出现了。
当然,PIXI.Application方法还有很多配置,这个可以到文档中查看详细的介绍:PIXI文档
Pixijs动画元素渲染
Pixijs既然是一个渲染引擎,那么它在渲染方面肯定是有独特之处,那究竟Pixijs是如何做渲染的呢。
首先,Pixijs支持Canvas和Webgl两种方式渲染
- Canvas方式相信我们都不陌生,是Html5的一个新增的一个画布绘图的功能。
- Webgl其实是Opengl在网页浏览器中的应用,专门针对三维视图所出现最新Api。
在Pixijs中,无论是使用Canvas还是Webgl方式,所写的代码都是一样的,只是需要通过PIXI.Application中的forceCanvas来设置是否强制使用Canvas方式即可。
搭建舞台
一个Pixijs项目,最开始都是根据需求搭建舞台:
this.app = new PIXI.Application(this.options.width, this.options.height, {
view: this.options.stage,
backgroundColor: 0xffffff
// forceCanvas: true
})
舞台会有很多属性可以设置,比较重要的是宽、高以及舞台依附的dom元素(view)。然后就是一些可选的设置,包括背景色、是否强制使用canvas、不透明度等等,这些可以根据具体的项目需求进行设置。
预加载元素
因为动画和游戏的资源都很多,所以任何一个动画或者游戏框架,都必须有预加载的功能。Pixijs有一个十分强大的加载器:PIXI.loaders。通过loader可以把图片资源预加载到项目中,然后通过onProgress和onComplete方法,就能监听到图片加载情况。
this.loader = new PIXI.loaders.Loader()
this.loader.add('stage1', stage1)
this.loader.load()
this.loader.onProgress.add(progressHandel)
this.loader.onComplete.add(handleComplete)
利用loader能够制作项目加载进度的动画
Pixijs通过Sprite、Graphics、TilingSprite等的api,生成场景中的元素
日常开发中,最经常用到的是Sprite类,这个用来创建一个精灵:
const car = new PIXI.Sprite(textures['car1.png'])
创建了之后,可以用对这个精灵进行各种的操作,比较常见的有以下几个:
car.setTransform(104, 94) // 设置位置
car.anchor.set(0.5) // 设置锚点
car.visible = false // 设置隐藏
car.alpha = 0.5 // 设置不透明度
设置好各种属性之后,就可以把精灵加入到场景中(一般会给各个场景新建一个Container,把精灵添加到Container中,再把Container添加到舞台中):
this.stage2 = new PIXI.Container()
this.stage2.addChild(car)
Pixijs精灵的属性有很多,需要根据具体的需求来设置精灵的属性,更多时候是需要翻查官网PIXI文档。
Pixijs事件处理
经过渲染之后,舞台中已经渲染了有很多精灵元素,那么下面就来看看,如何制作交互效果。
Sprite精灵事件
精灵中除了有各种属性之外,还提供了大量的事件,基本上涵盖了市面上所有交互需求:
this.againBtn.on('pointerdown', e => {
console.log(e)
})
通过on方法,绑定Pixijs中的click、mousedown、mouseup等方法,通过回调的参数e,就可以获取事件中回调的各种参数属性,通过这些参数即可做出各种的效果。这里有几点需要注意: 1. 这些事件中,有一些在手机上才会有效果,例如touch类的方法 2. 需要开启精灵的interactive属性才可以调用成功 3. 事件存在冒泡问题
Pixijs必备的插件
Pixijs作为一个渲染引擎,能做的主要的渲染方面的东西,但是要完成一个h5或者游戏,还需要一些辅助的工具才行。这里就介绍一下,用Pixijs开发的时候,必备的几个插件: + GSAP动画库
动画是h5和游戏中十分重要的一环,Pixijs中对于动画的支持极其有限,而GSAP恰好能够解决这一问题。GSAP是国外流行的动画库,并且有专门为Pixijs量身定制的插件,是Pixijs的好兄弟。
-
Pixi-sound
Pixijs官网推荐的音频插件,是一个简单的音频播放插件。虽然不及很多大型的音频库功能那么强大,但是一般的h5和小游戏只会播放简单的背景音乐,基本上已经够用了。 -
Pixi-layers
Pixijs官网推荐的层级插件,作用类似用css中的zindex。由于Pixijs基于Canvas,所以如果元素一多的话,叠层的情况就会经常出现;这个时候,如果还是通过代码的添加顺序来区分层级的话,就会十分地混乱。有了Pixi-layers后,可以通过设置z-index来区分层级,十分方便。