Skip to content

参考:PixiJS API 速查

基于 PixiJS v8.19 · 核于 2026-07

速查

  • 定位:2D 渲染引擎,双后端 WebGL(默认,preference: 'webgl')/ WebGPU(可选);不是图表库/UI 框架。
  • 核心链路new Application()await app.init(options)app.stage.addChild(...)app.canvas 插入 DOM。
  • 场景图Container 树,worldTransform/worldAlpha 父子累积;v8 起叶子节点(Sprite/Graphics/Mesh)不可再 addChild
  • Graphics v8:先画形状再 fill()/stroke()GraphicsContext 跨实例复用几何;挖洞用 .cut()
  • 文本三选一Text(精细样式)/ BitmapText(海量动态文本)/ HTMLText(富文本标签,异步渲染)。
  • Assets:Promise 化加载器,load/get/unload;Manifest + Bundle 分组懒加载;Resolver 处理多分辨率。
  • eventMode 默认 'passive':五取值 none/passive/auto/static/dynamic
  • Ticker 回调参数是 Ticker 实例:取 ticker.deltaTime,非裸数字。
  • Filters:数组 = 链式叠加;自定义需 GlProgram(+ 可选 WebGPU 程序)。
  • 性能三招:Render Groups(子树独立场景图)、cacheAsTexture(整体缓存成纹理)、手动 Culling(v8 不再自动裁剪)。
  • ParticleContaineraddParticle() 而非 addChild()Particle 无子节点/事件/滤镜。
  • v7→v8 三大改名app.viewapp.canvascontainer.namecontainer.label、枚举全部改字符串('nearest'/'repeat')。
  • 选型速记:静态图表/少量图形 → Canvas 2D;图形编辑器/白板 → Konva/Fabric;60fps+海量交互对象+游戏级性能 → PixiJS;真三维 → Three.js。
  • 官方资源pixijs.comGitHub | DevTools 浏览器插件可视化调试场景图。

一、核心类速查表

职责
Application应用外壳:new Application() + await init(options),持有 stage/canvas/ticker/renderer/screen
Container场景图节点基类:addChild/removeChild/addChildAt/swapChildren/reparentChildposition/scale/rotation/pivot/skew/visible/alpha
Sprite最基础的可视元素(一张纹理),anchor/tint/width/height
Graphicsv8 链式绘图 API:.rect()/.circle()/.fill()/.stroke()/.cut()
GraphicsContextGraphics 实例复用的几何数据(替代 v7 GraphicsGeometry
TextCanvas 光栅化文本,TextStyle 配置字体/描边/阴影
BitmapText预烘焙位图字形集,大量动态文本首选
HTMLTextforeignObject 内嵌真实 HTML,支持富文本标签
TilingSprite高效平铺纹理,tilePosition/tileScale 控制滚动与瓷砖缩放
NineSliceSprite九宫格拉伸(原 NineSlicePlane),leftWidth/topHeight 等定义不变形边距
Mesh / MeshSimple / MeshRope / MeshPlane自定义几何渲染原语(Geometry + Shader + State)
ParticleContainer / Particle海量精灵专用容器,addParticle() 而非 addChild()
Assets资源管理单例:load/get/unload/init/loadBundle/addBundle
Ticker渲染循环驱动器:add/addOnce/removedeltaTime/elapsedMS
Color统一颜色抽象,接受 CSS 命名色/十六进制/{r,g,b,a}/HSL 等格式
Matrix / Point / ObservablePoint数学工具,ObservablePoint 值变化时触发回调
Rectangle / Circle / Ellipse / Polygon / RoundedRectangle / Triangle形状类,命中测试/裁剪区域常用
Filter / GlProgram自定义滤镜:着色器程序 + resources 传 uniform
extensions / ExtensionType扩展系统:LoadParser/ResolveParser/CacheParser/DetectionParser 等类型可注册替换

二、事件 eventMode 速查

取值行为
none完全忽略交互事件,子元素也不响应,性能最优
passive默认自身不响应点击,但可交互子元素仍正常工作
auto仅当父级可交互时才参与命中测试,自身不主动触发
static标准交互:接收 pointer/mouse/touch 事件,适合按钮等静止元素
dynamicstatic,额外在指针静止时每帧做合成命中检测,适合会动的对象

事件类型三类:指针事件(推荐,pointerdown/pointerup/pointermove/pointertap)、鼠标事件(click/rightclick/wheel)、触摸事件(touchstart/tap)。sprite.interactive = true 仍可用,是 eventMode = 'static' 的别名。

三、Ticker / UPDATE_PRIORITY 速查

js
app.ticker.add((ticker) => { /* ticker.deltaTime 是缩放后帧时差 */ });
app.ticker.addOnce(fn);
app.ticker.remove(fn);
优先级数值
UPDATE_PRIORITY.HIGH50
UPDATE_PRIORITY.NORMAL0(默认)
UPDATE_PRIORITY.LOW-50

ticker.minFPS/ticker.maxFPS(0 = 不限制)钳制帧率;app.stop()/app.start() 手动暂停/恢复循环;sharedTicker: false 可创建独立 Ticker 实例。

四、Filters 内置滤镜速查

滤镜用途
AlphaFilter整体透明度
BlurFilter高斯模糊,strength 控制强度
ColorMatrixFilter颜色矩阵变换(灰度/反色/饱和度等)
DisplacementFilter位移贴图扭曲效果
NoiseFilter噪点效果,noise 控制强度

高级混合模式(如 HardMixBlend)需 import 'pixi.js/advanced-blend-modes' 才生效。自定义滤镜需提供 GlProgram(WebGL 必需)与可选 WebGPU 程序,通过 resources 传 uniform。社区滤镜包 pixi-filters v8 起按子路径导入(如 pixi-filters/adjustment),替代 v7 @pixi/filter-adjustment

五、性能优化速查

手段要点
Render Groupsnew Container({ isRenderGroup: true }),子树独立场景图,变换计算下放 GPU;不要滥用
Render Layerslayer.attach(obj)/detach(obj),视觉顺序与逻辑父子关系解耦
cacheAsTexture容器整体渲染进纹理复用;限制 >4096×4096px 可能失败
Cullingv8 默认关闭且不自动,需手动 Culler.shared.cull() 或注册 CullerPlugin
ParticleContaineraddParticle(),区分动态/静态属性,boundsArea 需手动设置
纹理 GC默认 3600 帧未用自动回收,textureGCMaxIdle 可调
遮罩层级轴对齐矩形遮罩最快 > 图形遮罩 > 精灵遮罩(走滤镜)最慢
释放资源destroy() 彻底释放;texture.source.unload() 只卸 GPU 显存保留引用

六、v7 → v8 变化速查表

分类v7v8
初始化new PIXI.Application(options)new Application() + await app.init(options)
画布属性app.viewapp.canvas
Graphics 绘制beginFill().drawRect().endFill().rect().fill()
Graphics 线型lineStyle({ width, color }).stroke({ width, color })
Graphics 挖洞beginHole()/endHole().cut()
几何复用GraphicsGeometryGraphicsContext
容器命名container.namecontainer.label
场景图限制叶子节点可 addChild叶子节点不可再 addChild
交互开关interactive = true(默认近似 'auto'eventMode = 'static'(默认 'passive'
粒子容器addChild(sprite)addParticle(particle),需手动设 boundsArea
Ticker 回调delta 数字Ticker 实例,取 .deltaTime
裁剪cullable = true 自动生效需手动 Culler.shared.cull()CullerPlugin
缓存cacheAsBitmap = truecacheAsTexture({...})
包围盒getBounds() 返回 Rectangle返回 Bounds,需 .rectangle
纹理加载Texture.from(url) 可联网须先 await Assets.load(url)
全局配置settings.RESOLUTION/settings.ADAPTERAbstractRenderer.defaultOptions.resolution/DOMAdapter.set()
枚举常量SCALE_MODES.NEAREST/WRAP_MODES.REPEAT/DRAW_MODES.TRIANGLES字符串 'nearest'/'repeat'/'triangle-list'
类改名NineSlicePlane/SimpleMesh/SimplePlane/SimpleRopeNineSliceSprite/MeshSimple/MeshPlane/MeshRope
社区滤镜@pixi/filter-adjustmentpixi-filters/adjustment
Uniform 定义普通值每个 uniform 需 { value, type: 'f32' } 显式类型(供 WebGPU 生成 layout)

七、选型对比:PixiJS vs Canvas 2D vs Konva vs Fabric.js vs Three.js

维度PixiJS v8Canvas 2D(原生 API)KonvaFabric.jsThree.js
渲染后端WebGL(默认)/ WebGPU(可选)CPU 光栅化 2D Context封装 Canvas 2D封装 Canvas 2DWebGL/WebGPU,面向 3D
定位高性能 2D 渲染引擎(游戏/交互/可视化底层)浏览器原生绘图 API,无场景图易用的 2D 场景图库(图形编辑/舞台类应用)面向"可编辑对象"的画布库(设计工具/白板)3D 渲染引擎,2D 只是特例用法
场景图/对象模型完整场景图(Container 树 + Transform 继承)无场景图,需自行管理绘制状态有场景图(Stage/Layer/Group/Shape)有对象模型,内建选择/缩放/旋转控制手柄有场景图(Scene/Object3D 树),但是 3D 空间
交互能力Federated Events,eventMode 精细控制,需要自己实现拖拽/选中逻辑需手写命中检测(如 isPointInPath内建拖拽(draggable)、事件绑定简单内建选择框、旋转缩放手柄,编辑器体验开箱即用需第三方库辅助拾取,2D 交互非强项
性能定位大量对象/高帧率首选,批处理+纹理图集+ParticleContainer 专为海量精灵优化对象一多(几百+复杂图形)掉帧明显,无 GPU 批处理基于 Canvas2D,量级和 Canvas2D 接近,量大会慢于 PixiJS同样基于 Canvas2D,且对象模型开销更重,量大更容易卡GPU 渲染强,但用来做纯 2D 是"杀鸡用牛刀",心智成本高
学习曲线中等(需理解 Container/Texture/Assets 异步加载/事件模式)低(API 简单但要自己搭场景图/动画循环)低-中(API 友好,文档面向"图形应用")低-中(编辑器场景开箱即用,定制渲染管线难)高(3D 数学、相机、光照等概念负担重)
典型场景2D 游戏、大规模数据点可视化、复杂交互动效、需要滤镜/混合模式的视觉效果简单图表、少量图形、一次性绘制、体积敏感的小工具白板/流程图/图形编辑器类应用设计工具、海报编辑器、白板(强调"可编辑对象" UX)3D 场景、WebXR、需要透视/光照的可视化

选型速记:只是画个静态图表/少量图形 → Canvas 2D 原生足够;要做"图形编辑器/白板"且想少写交互代码 → Konva(简单场景)或 Fabric(要选择/变换手柄);要 60fps 动画、成百上千交互对象、滤镜特效、游戏级性能 → PixiJS;要做真三维 → Three.js(2D UI 叠加可与 PixiJS 混用)。

八、生态 Ecosystem

项目说明
@pixi/react以 React 声明式方式管理 PixiJS 对象,要求 React 19+
DevTools浏览器扩展,实时查看渲染性能/场景图层级/纹理管理
Layout基于 Facebook Yoga 引擎的 CSS 风格 flexbox 布局
pixi-spineSpine 骨骼动画集成
pixi-filters高性能滤镜合集(模糊、发光等),v8 起按子路径导入
pixi-sound基于 WebAudio 的音频播放(含音频滤镜)
UI预制按钮/滑块/进度条/复选框等交互组件库
AssetPack资源打包/清单自动生成工具,配合 Assets/Manifest/Resolver 使用
pixi-viewport社区生态,相机/视口缩放平移控件,常用于地图类/无限画布场景

九、权威链接