Existe alguma maneira de estender o carregador Pixi ou escrever um carregador personalizado? Quero adicionar suporte a SVGZ, o que basicamente significa que preciso esvaziar o conteúdo carregado com gzip para um SVG adequado antes que Pixi o processe.
PixiJS v5 introduziu registerPlugin
no carregador:
http://pixijs.download/dev/docs/PIXI.Loader.html#.registerPlugin
Isso permite que você crie seu próprio middleware para lidar com tipos de mídia personalizados. Aqui está um exemplo aproximado de como você pode fazer isso:
const SVGZLoaderPlugin = {
add() {
// handle loading SVGZ files as an ArrayBuffer
PIXI.LoaderResource.setExtensionXhrType(
'svgz', LoaderResource.XHR_RESPONSE_TYPE.BUFFER);
PIXI.LoaderResource.setExtensionLoadType(
'svgz', LoaderResource.LOAD_TYPE.XHR);
},
use(resource, next) {
// deflate SVGZ
next();
}
};
PIXI.Loader.registerPlugin(SVGZLoaderPlugin);
Você também pode consultar https://github.com/englercj/resource-loader para obter mais informações sobre como o Loader funciona.
Boa sorte!
Obrigada, Matt! Até agora, a atualização de v4 para v5 causa problemas com o carregador - ele escreve "PIXI.loaders.Loader class mudou para PIXI.Loader" aviso de descontinuação e mostra um retângulo preto na tela até que todas as imagens sejam carregadas.
Existe algum guia de transição ou exemplos de como reescrever o antigo carregador do Pixi para usar o novo?
Temos um guia de migração v5 aqui: https://github.com/pixijs/pixi.js/wiki/v5-Migration-Guide
Não há algo específico para o Loader. Esse aviso de descontinuação apenas permite que você saiba que o namespace mudou, mas ainda deve funcionar. Se houver algo mais sutil acontecendo, se você pudesse criar um novo problema com um exemplo do que está vendo com retângulos pretos, talvez possamos fornecer uma experiência mais elegante.
Vou encerrar este problema porque parece que a questão do plug-in foi resolvida.
Comentários muito úteis
PixiJS v5 introduziu
registerPlugin
no carregador:http://pixijs.download/dev/docs/PIXI.Loader.html#.registerPlugin
Isso permite que você crie seu próprio middleware para lidar com tipos de mídia personalizados. Aqui está um exemplo aproximado de como você pode fazer isso:
Você também pode consultar https://github.com/englercj/resource-loader para obter mais informações sobre como o Loader funciona.
Boa sorte!