# 滤镜效果
PixiJS 内置了多种滤镜,可以为显示对象添加视觉效果。
# 使用滤镜 {#using-filters}
import { BlurFilter, DropShadowFilter, GlowFilter } from 'pixi.js';
// 模糊滤镜
const blurFilter = new BlurFilter();
blurFilter.blur = 5; // 模糊强度
sprite.filters = [blurFilter];
1
2
3
4
5
6
7
2
3
4
5
6
7
# 常用内置滤镜 {#built-in-filters}
# 模糊滤镜 (BlurFilter) {#blur-filter}
const blur = new BlurFilter();
blur.blur = 10; // 模糊强度
blur.quality = 4; // 质量(值越大越平滑)
sprite.filters = [blur];
1
2
3
4
2
3
4
# 发光滤镜 (GlowFilter) {#glow-filter}
// 需要额外安装 @pixi/filter-glow
const glow = new GlowFilter({
distance: 15, // 发光距离
outerStrength: 2, // 外部强度
innerStrength: 1, // 内部强度
color: 0xffff00, // 发光颜色
});
sprite.filters = [glow];
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 颜色矩阵滤镜 (ColorMatrixFilter) {#color-matrix-filter}
const colorMatrix = new ColorMatrixFilter();
// 灰度
colorMatrix.greyscale(1);
// 色调
colorMatrix.hue(180);
// 亮度
colorMatrix.brightness(1.5);
// 黑白
colorMatrix.blackAndWhite(true);
// 组合效果
colorMatrix. Technicolor(true);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 投影滤镜 (DropShadowFilter) {#drop-shadow-filter}
const shadow = new DropShadowFilter({
color: 0x000000,
alpha: 0.5,
blur: 4,
distance: 5,
offsetX: 3,
offsetY: 3,
});
sprite.filters = [shadow];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 动画滤镜 {#animated-filters}
const blurFilter = new BlurFilter();
sprite.filters = [blurFilter];
let blurAmount = 0;
app.ticker.add(() => {
blurAmount = Math.sin(Date.now() * 0.003) * 5 + 5;
blurFilter.blur = blurAmount;
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 多个滤镜叠加 {#multiple-filters}
sprite.filters = [
new BlurFilter(),
new ColorMatrixFilter(),
new DropShadowFilter(),
];
1
2
3
4
5
2
3
4
5