将 PIXI 精灵放置在纹理的循环中

Placing a PIXI sprite in a loop from a texture

当我的对象中的某个项目具有特定值时,我将纹理中的图像放置在我的容器上。

我的代码确实在我想要的每个位置放置了一个图像,但我遇到的问题是每个图像都是相同的。因为随处可见的图像是阵列中的最后一个图像,所以我猜我的循环方式有问题,另一方面,我尝试了各种不同的循环方式,结果对我来说从来没有什么不同。也许我用错了 PIXI?

const texture = PIXI.utils.TextureCache.skills

const values = Object.values(treeData.nodes).filter(obj => {
    return obj.isKeystone === true
})

values.forEach(node => {
    const spriteData = treeData.skillSprites.keystoneInactive[3].coords[node.icon]
    // if i console my spriteData here, it looks fine and i get different data everytime
    const rectangle = new PIXI.Rectangle(spriteData.x, spriteData.y, spriteData.w, spriteData.h)
    texture.frame = rectangle

    const image = new PIXI.Sprite(texture)
    image.anchor.set(0.5)
    image.x = node.x
    image.y = node.y
    spriteContainer.addChild(image)
})

也许你还需要制作一个新的纹理?否则你只是不断重置相同纹理的框架。

const frame = new PIXI.Rectangle(spriteData.x, spriteData.y, spriteData.w, spriteData.h)
const newTexture = new PIXI.Texture(texture, frame)
const image = new PIXI.Sprite(newTexture)