You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pixi.js 5+中Tiling Sprite在XY轴重复显示异常问题求助

解决Pixi.js TilingSprite重复显示图片片段的问题

如果你的需求是让图片片段铺满窗口但不重复,直接换普通Sprite就行——TilingSprite本身的设计目的就是重复纹理填充区域,代码改成这样:

createSprite(){
  const texture = Texture.from(this.spriteName);
  const sprite = new Sprite(texture);
  // 直接设置尺寸铺满窗口,无需重复纹理
  sprite.width = window.innerWidth;
  sprite.height = window.innerHeight;
  sprite.position.set(0, 0);
  return sprite;
}

要是必须用TilingSprite,那就调整tileScale让纹理刚好缩放一次填满整个区域,避免重复:

createTilingSprite(){
  const texture = Texture.from(this.spriteName);
  const tilingSprite = new TilingSprite(
    texture,
    window.innerWidth,
    window.innerHeight
  );
  // 计算缩放比例,让纹理刚好覆盖一次TilingSprite的范围
  tilingSprite.tileScale.x = window.innerWidth / texture.width;
  tilingSprite.tileScale.y = window.innerHeight / texture.height;
  tilingSprite.position.set(0, 0);
  return tilingSprite;
}

如果是想让超出纹理的部分拉伸边缘而不是重复,还可以修改纹理的wrap模式(适合需要边缘过渡的场景):

import { WRAP_MODES } from 'pixi.js';

createTilingSprite(){
  const texture = Texture.from(this.spriteName);
  // 修改基础纹理的wrap模式为clamp,阻止重复
  texture.baseTexture.wrapMode = WRAP_MODES.CLAMP;
  const tilingSprite = new TilingSprite(
    texture,
    window.innerWidth,
    window.innerHeight
  );
  tilingSprite.position.set(0, 0);
  return tilingSprite;
}

内容的提问来源于stack exchange,提问作者Peka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:35:13