es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PIXI.js El tipo de filtro de matriz de colores ‘number[]’ no se puede asignar al tipo ‘[number, …number[]]’

Escribí una función, siempre funciona bien

getLightMatrix(valor: number): number[] {
    let m = [
        1,0,0,0,valor,
        0,1,0,0,valor,
        0,0,1,0,valor,
        0,0,0,1,0,
    ];
    return m;
}
let m = new PIXI.filters.ColorMatrixFilter();
m.matrix = getLightMatrix(1);

Recientemente, cuando utilizo Pixi 6.2.0, muestra el siguiente error: TS2322: El tipo ‘number[]’ no se puede asignar al tipo ‘ColorMatrix’.
El tipo ‘number[]’ no se puede asignar al tipo ‘[number, …number[]]’.
La fuente no proporciona una coincidencia para el elemento requerido en la posición 0 en el destino.

Si le asigno un number[] directamente:

let m = new PIXI.filters.ColorMatrixFilter();
m.matrix = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];

Pasa la verificación, ¿cómo debo modificarlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que con la actualización a Pixi 6.2.0, el tipo de la propiedad matrix en el ColorMatrixFilter ha cambiado. Para solucionar el error, debemos modificar la función getLightMatrix para que devuelva un array del tipo correcto.

    Aquí está la función actualizada:

    getLightMatrix(valor: number): PIXI.Filter.ColorMatrix {
      return new PIXI.Filter.ColorMatrix()
        .tint(valor, valor, valor, 1);
    }
    

    Esta función ahora devuelve un objeto PIXI.filters.ColorMatrix, que puede asignarse directamente a la propiedad matrix del ColorMatrixFilter.

    let m = new PIXI.filters.ColorMatrixFilter();
    m.matrix = getLightMatrix(1);
    

    Con estos cambios, el error debería resolverse y el código debería funcionar como se espera en Pixi 6.2.0.

Comments are closed.