pixi.js 总结
我的博客简单简洁 可能表达不清. 如有想法, 敬请留言.谢谢! 群:881784250
https://github.com/ccaleb/endless-runner/tree/master/javascript-pixi/pixi.js-master
1:pixi.js的优点
代码简单,性能高效,扩展性强
PixiJS的性能优势, pixi.js专注于渲染,在js2d游戏引擎中,其性能是相当彪悍的。(官网上说最强) 见测试 https://www.goodboydigital.com/pixijs/bunnymark/?base=pixijs&category=bunnymark
PixiJS有着"简单"的代码, 友好的API,loader.add().add().load(), label.centerXY()
PixiJS易扩展,能发挥你无穷的想象力通过装一些插件,可以更方便的实现一些功能.龙骨功能,透视功能,都过插件都可以实现
PIXIJS一直在维护,一直在更新, 其模块化的思想相当先进.
2 核心是Sprite. PIXI.Sprite->PIXI.Container->PIXI.DisplayObject
Sprite对象是渲染到屏幕的所有纹理对象的基础,能轻轻松松改变纹理,只要.sprite.texture = ...
Sprite默认是不响应点击等事件的,必须 Interactive
怎样创建srptie呢?
new Sprite(texture?) 常用方式
Sprite.from(source); 快捷方式. @param source, 可以是url地址,canvas,纹理
Sprite.fromFrame(key); 快捷方式 @param key 为json中的key,或加载时定义的key
Sprite.fromImage(url, crossorigin?:, scaleMode?:); 快捷方式 @param url,不解释
常用属性pivot, anchor, position, scale,texture 是不是一看就知道是干嘛的.
3 Pixi只做三件事 Pixi helped me with 3 main things:
- loading and displaying of assets
- interactivity
- game loop
4 一些有用的东西
可用命令行编译spritesheet npm install sprietsheet -g
app.ticker() loop及time
处理九宫格 Pixi.mesh.NineSlicePlane(texture, x, y, width, height)
pointer事件(鼠标和touch) mouse事件(鼠标) tap事件(touch), 比较好的是, sprite.on('pointerdown', fun), fun中this会是sprite
获取全局坐标 app.renderer.plugins.interaction.mouse.global
PIXI inspector An extension to the Chrome DevTools for inspecting Pixi.js games/applications.
loader.add(..........).on('progress", loadProgress).load(complete) 加载完成后的资源是保存在PIXI.loader.resources中,键值就是url或设置的key
PIXI.util里面包含了一些很有用东西. 比如isMobile,EventEmitter,TextureCache......
PIXI.extras需面也包含了一些有用的东西 例如 AnimatedSprite, BitmapText, Tiling等等,例如Tiling处理一些滚动效果是很高效的
5 pixi中常见的问题:
spriteA可以添加spriteB,spriteA宽高为1,这时需要用Container, sprite的宽高取决于sprite中纹理的宽高.
dis.stage为空, 需要注意.应用 app.stage
graphics 是继承容器的, 添加graphic有效没?
ui的问题,纯粹的用sprite,txt处理不复杂的界面搓搓有余.但是处理scroller和list是有点困难的. 用第三方ui框架 spown,ezgui都是有点问题的,通过egret编辑界面.然后导成pixi.js代码...
6 其他资料
多纹理渲染 http://phaser.io/tutorials/advanced-rendering-tutorial/part2
下面是老外的演讲的一些how
Things Audience Members Will Learn 观众会学到的东西
- How to set up and get Pixi.js app running 怎样让pixi运行
- How to use its basic features 怎样用它的基本功能
- Sprites
- Graphics
- Interaction
- How to use the more advanced features 怎样用它的先进功能
- Filters
- Custom Filters
- Particles
- Meshes
- Ropes
- RenderTextures
- Exporting Data
- How to optimise your scene for Pixi.js 怎样优化
性能测试: multi texture batching https://phaser.io/tutorials/advanced-rendering-tutorial/part2
pixi.js > phaser3 > phaser2 https://github.com/themoonrat/webgl-benchmark
线上例子 欢乐球球 是pixi.js和three.js开发的~
var e = canvas.getContext("webgl", {
alpha: !1,
antialias: !1,
preserveDrawingBuffer: !1,
premultipliedAlpha: !1
});
e.colorMask(!0, !0, !0, !0), this.renderer3D = new THREE.WebGLRenderer({
context: e,
canvas: canvas,
premultipliedAlpha: !1,
alpha: !1
}), this.renderer3D.setPixelRatio(window.devicePixelRatio), this.renderer3D.setSize(window.innerWidth, window.innerHeight),
this.renderer3D.shadowMap.enabled = a.default.enableShadow, this.renderer3D.autoClear = !1,
this.state3D = this.renderer3D.state, a.default.stageWidth = canvas.width, a.default.stageHeight = canvas.height,
SPE.valueOverLifetimeLength = 3, (0, s.setSharedCanvasSize)(canvas.width, canvas.height),
PIXI.settings.isLittleGame = !0, PIXI.settings.MAX_TEXTURES = 4, PIXI.settings.MAX_VERTEX_ATTRIBS = 16,
PIXI.settings.RESOLUTION = 1, PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.LINEAR,
PIXI.settings.CAN_UPLOAD_SAME_BUFFER = !0, PIXI.settings.SPRITE_BATCH_SIZE = 256,
PIXI.settings.GC_MODE = PIXI.GC_MODES.MANUAL, PIXI.settings.MIPMAP_TEXTURES = !1,
e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL, !1), this.pixiApp = new PIXI.Application({
view: canvas,
context: e,
width: window.innerWidth,
height: window.innerHeight,
resolution: window.devicePixelRatio,
forceCanvas: !1,
clearBeforeRender: !1,
roundPixels: !1,
transparent: !1,
legacy: !0,
sharedLoader: !0,
autoStart: !1,
sharedTicker: !0
}), this.pixiApp.ticker.autoStart = !1, this.pixiApp.ticker.stop(), this.pixiApp.removeRenderTick(),
pixi.js 总结的更多相关文章
- (原)用pixi.js 实现 方块阵点击后原地自转效果
源码 各位,请教一个问题,我这个还有BUG,我是想实现,点击一下可以 停止转动,然后再点一下重新转动.而不是一直加速,有没有什么好办法? PS:问题已经解决,谢谢评论的大神@Antineutrino ...
- 让hammer完美支持Pixi.js - 2D webG库
由于项目改造,采用2D webG的pixi库,那么基于canvas的结构上,事件就是最大的一个问题了 改造的原理很简单,把hammer里面的addEventListeners事件绑定给第三方库代替,事 ...
- 利用pixi.js制作精灵动画
CSS Sprites 技术对于广大的前端工程师来说应该是一点也不陌生.国内开发者昵称为CSS精灵,通过一定的技术手段,让精灵动起来,我称其为精灵动画,那么目前有哪些实现方式 呢?下面让我们详细的聊聊 ...
- pixi.js教程中文版--基础篇
前言 Pixi.js使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库.提供无缝 C ...
- HTML5游戏开发引擎Pixi.js完全入门手册(一)框架简介及框架结构分析,作者思路剖析
前言: 最近无聊在淘宝弄了个小店,打算做一个兼职.遇到一个客户,要我帮忙拷贝一个html5游戏.. 我这人有一个习惯,拿到自己没见过的东西.都会去研究一番.去网上查了下发现,资料都是英文版.感觉极度不 ...
- pixi.js
添加基本文件(库文件) 渲染库 pixi.js pixi.lib.js是pixi.js的子集,依赖class.js,cat.js,event_emiter.js文件 pixi.scroller.js ...
- 三星a9上测试egret与pixi.js的渲染性能
for (let i = 0; i < 500; i++) { let shape = new egret.Shape(); shape.graphics.beginFill(0xff0000) ...
- pixi.js v5 快速了解
pixi.js 追求简单, 性能,高价值. pixi.js v5将是一交比较大的升级,代码更加精简,性能更加强悍,功能更加丰富,扩展更加高效 pixi.js一步一脚印,版本持续稳定的更新, 深入学习 ...
- pixi.js + three.js
three.js 最好的webgl 3d渲染库之一, pixi.js 最好的webgl 2d渲染库之一,也许可以把之一去掉 两个库都很精简,如果把两个库结合起来,一定很爽很爽,你说是吧! ...
- 如何在PIXI.js里面使用json文件来管理瓦片集(tileset)?
如何在PIXI.js里面使用json文件来管理瓦片集(tileset)? PIXI建议我们将素材图片汇总成一个瓦片集(tileset),然后用纹理地图集(texture atlas,通常是一个json ...
随机推荐
- GPUImage每个类的作用
28 #import "GPUImageBrightnessFilter.h" //亮度 29 #import "GPUImageExpos ...
- 为什么volatile不能保证原子性?
为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在Sun的JDK官方文档是这样形容vola ...
- STM8S——Flash program memory and data EEPROM
1.简介 STM8S内部的FLASH程序存储器和数据EEPROM是由一组通用寄存器来控制的:所以我们可以通过这些通用寄存器来编程或擦除存储器的内容.设置写保护.或者配置特定的低功耗模式.我们也可以自己 ...
- [Selenium]如何通过Selenium实现Ctrl+click,即按住Ctrl的同时进行单击操作
[以下是不负责任的转载……] 在自动化测试的过程中,经常会出现这样的场景: 按住Ctrl的同时,进行单击操作,已达到多选的目的 Actions a = new Actions(driver); a.k ...
- Unity扩展编辑器五
扩展系统自带组件Inspector 可以在系统摄像机组建上添加一个按钮,这样就可以单独处理逻辑了
- jQuery中turn.js(翻页效果)学习笔记
Turn.js是一个内置的jQuery翻页插件1 html中引入<script type="text/javascript" src="js/turn.js&quo ...
- Python中的常规习题
循环总结 while 语句 for 语句 - 字符串 - range() 函数 break 语句 continue 语句 学习笔记传送门 列表学习 # 练习: # 输入一个整数n, 判断这个整数是否是 ...
- DICOM 协议学习笔记之 What is DICOM
什么是DICOM? Dicom (Digital Imaging and Communications in Medicine)即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052 ...
- 欧拉筛——$O(n)$复杂度的质数筛法
欧拉筛法可以以\(O(n)\)的时间,空间复杂度求出\(1-n\)范围内的所有质数. 其核心思想是每个合数仅会被其最小的质因数筛去一次. See this website for more detai ...
- jQuery的基本使用
一.jQuery简介 jQuery是一个快速.简洁的JavaScript框架,它封装了JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动 ...