Pixi.js: Cargue recursos de imagen para PIXI.js junto con Webpack

Creado en 2 dic. 2016  ·  6Comentarios  ·  Fuente: pixijs/pixi.js

Estoy tratando de cargar activos de imagen para PIXI.js en un proyecto mío de React que usa Webpack. Aquí está toda mi clase de componente 'Menú':

import React from 'react';
import styles from './Menu.css';
import backgroundUrl from './background.jpg';
require('pixi.js')

class Menu extends React.Component {    

    componentDidMount () {

        // Get reference to canvas element
        this.canvas = this.refs.canvas;        

        // Load assets                
        PIXI.loader.add([
            {
                name: 'background',
                url: backgroundUrl
            }
        ]).load(this.init());

    }

    init () {

        // Create background sprite
        const background = new PIXI.Sprite(PIXI.loader.resources.background.texture);

        // DEBUG: Height and width is always '1'
        console.log('Background width: ' + background.width);
        console.log('Background height: ' + background.height);

        // Setup renderer
        this.renderer = PIXI.autoDetectRenderer(background.width, background.height);
        this.renderer.autoResize = true;
        this.renderer.resize(window.innerWidth, window.innerHeight);
        this.canvas.appendChild(this.renderer.view);

        // Create stage
        this.stage = new PIXI.Container();                

        // Add background to stage
        this.stage.addChild(background)

        // Tell the renderer to render the stage
        this.renderer.render(this.stage);

    }

    render () {

        return (
           <div className={styles.canvas} ref='canvas'></div>
        );
    }

}

export default Menu;

Ahora, como puede ver, estoy intentando cargar la imagen background.jpg en PIXI con la función loader.add() . Simplemente no funciona. En los registros de mi consola de depuración puedo ver que la altura y el ancho de la imagen es 1. Además, cuando veo la URL de la imagen de fondo, todo parece estar bien. ¿Algun consejo?

🤔 Question

Comentario más útil

esto es obsoleto ahora ... y necesitamos una forma de cargar cualquier activo que estemos empaquetando con webpack

Todos 6 comentarios

Intente cambiarlo a esto;
~.load (() => this.init ());~

@ staff0rd ¡ eso funciona muy bien! ¿¿Pero por qué??

load espera una función como su parámetro, sin embargo, en realidad estaba llamando a init() pasando así el resultado (void) a load . Si init no tiene referencias a this en su interior, puede usar lo siguiente para pasar la función;
~.cargar (este.init);~

Observe la falta de paréntesis.

esto es obsoleto ahora ... y necesitamos una forma de cargar cualquier activo que estemos empaquetando con webpack

@hayesmaker funciona pero la textura está vacía por un tiempo. cuando está listo, se dispara correctamente.

@nitwhiz ¿ es por eso que inicialmente obtengo un ancho de 1px para todos los sprites?
¿Hay alguna manera de hacer que se active una devolución de llamada una vez que se carga un objeto?

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

gigamesh picture gigamesh  ·  3Comentarios

sntiagomoreno picture sntiagomoreno  ·  3Comentarios

lucap86 picture lucap86  ·  3Comentarios

distinctdan picture distinctdan  ·  3Comentarios

madroneropaulo picture madroneropaulo  ·  3Comentarios