我的博客简单简洁 可能表达不清. 如有想法, 敬请留言.谢谢! 群: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 总结的更多相关文章

  1. (原)用pixi.js 实现 方块阵点击后原地自转效果

    源码 各位,请教一个问题,我这个还有BUG,我是想实现,点击一下可以 停止转动,然后再点一下重新转动.而不是一直加速,有没有什么好办法?  PS:问题已经解决,谢谢评论的大神@Antineutrino ...

  2. 让hammer完美支持Pixi.js - 2D webG库

    由于项目改造,采用2D webG的pixi库,那么基于canvas的结构上,事件就是最大的一个问题了 改造的原理很简单,把hammer里面的addEventListeners事件绑定给第三方库代替,事 ...

  3. 利用pixi.js制作精灵动画

    CSS Sprites 技术对于广大的前端工程师来说应该是一点也不陌生.国内开发者昵称为CSS精灵,通过一定的技术手段,让精灵动起来,我称其为精灵动画,那么目前有哪些实现方式 呢?下面让我们详细的聊聊 ...

  4. pixi.js教程中文版--基础篇

    前言 Pixi.js使用WebGL,是一个超快的HTML5 2D渲染引擎.作为一个Javascript的2D渲染器,Pixi.js的目标是提供一个快速的.轻量级而且是兼任所有设备的2D库.提供无缝 C ...

  5. HTML5游戏开发引擎Pixi.js完全入门手册(一)框架简介及框架结构分析,作者思路剖析

    前言: 最近无聊在淘宝弄了个小店,打算做一个兼职.遇到一个客户,要我帮忙拷贝一个html5游戏.. 我这人有一个习惯,拿到自己没见过的东西.都会去研究一番.去网上查了下发现,资料都是英文版.感觉极度不 ...

  6. pixi.js

    添加基本文件(库文件) 渲染库 pixi.js pixi.lib.js是pixi.js的子集,依赖class.js,cat.js,event_emiter.js文件 pixi.scroller.js ...

  7. 三星a9上测试egret与pixi.js的渲染性能

    for (let i = 0; i < 500; i++) { let shape = new egret.Shape(); shape.graphics.beginFill(0xff0000) ...

  8. pixi.js v5 快速了解

    pixi.js 追求简单,  性能,高价值. pixi.js v5将是一交比较大的升级,代码更加精简,性能更加强悍,功能更加丰富,扩展更加高效 pixi.js一步一脚印,版本持续稳定的更新, 深入学习 ...

  9. pixi.js + three.js

    three.js    最好的webgl 3d渲染库之一, pixi.js    最好的webgl 2d渲染库之一,也许可以把之一去掉 两个库都很精简,如果把两个库结合起来,一定很爽很爽,你说是吧! ...

  10. 如何在PIXI.js里面使用json文件来管理瓦片集(tileset)?

    如何在PIXI.js里面使用json文件来管理瓦片集(tileset)? PIXI建议我们将素材图片汇总成一个瓦片集(tileset),然后用纹理地图集(texture atlas,通常是一个json ...

随机推荐

  1. cogs1538 [AHOI2005]LANE 航线规划

    套路题+裸题 首先肯定离线,倒过来处理,删边->加边 连边的时候,如果不连通就连,否则在这两个点的链上打个覆盖标记,查询的时候输出没被覆盖的路径条数 #include<cstdio> ...

  2. Docker与CI持续集成/CD(转)

    背景 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会 ...

  3. 【日常训练】Help Victoria the Wise(Codeforces 99C)

    题意与分析 这题意思是这样的:在正方体的六面镶嵌给定颜色的宝石(相同颜色不区分),然后问最多有几种彼此不等价(即各种旋转过后看起来一致)的方案. 其实可以乱搞,因为范围只有720.求出全排列,然后每个 ...

  4. Altium中Logo的导入方法及大小调整

    Altium中Logo的导入方法及大小调整   LOGO识别性是企业标志的重要功能之一,特点鲜明.容易辨认,很多客户需要在PCB设计阶段导入LOGO标示归属特性.如果LOGO是CAD图纸,可以直接按照 ...

  5. 如何配置pycaffe

    首先,使用cmake配置.生成caffe的vs2015工程时,设定生成python接口,即BUILD项->BUILD_python.BUILD_python_layer,注意使用CMake生成V ...

  6. 如何用Python为你的邮箱加油?还有这种操作!

    我来介绍一下我是如何使用 Python 来节省成本的. 我最近在开一辆烧 93 号汽油的车子.根据汽车制造商的说法,它只需要加 91 号汽油就可以了.然而,在美国只能买到 87 号.89 号.93 号 ...

  7. docker 下载安装与配置

    # mac离线安装dockerhttps://download.docker.com/mac/stable/24312/Docker.dmg # windows离线安装dockerhttp://mir ...

  8. 最优方向法(MOD)

    算法描述 求解模型: \[\min\sum\limits_i\|x_i\|_0 \quad \mathrm{s.t.} \; \|Y-DX\|^2_F \leq \varepsilon\] 或 \[\ ...

  9. docker 部署 zookeeper+kafka 集群

    主机三台172.16.100.61172.16.100.62172.16.100.63Docker 版本 当前最新版 # 部署zk有2种方法 ## 注意 \后不要跟空格 一 . 端口映射 172.16 ...

  10. 第十四次ScrumMeeting博客

    第十四次ScrumMeeting博客 本次会议于12月3日(日)22时整在3公寓725房间召开,持续30分钟. 与会人员:刘畅.辛德泰.张安澜.方科栋. 1. 每个人的工作(有Issue的内容和链接) ...