Pixi.js: Muat aset gambar untuk PIXI.js bersama dengan Webpack

Dibuat pada 2 Des 2016  ·  6Komentar  ·  Sumber: pixijs/pixi.js

Saya mencoba memuat aset gambar untuk PIXI.js dalam proyek React milik saya yang menggunakan Webpack. Inilah seluruh kelas komponen 'Menu' saya:

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;

Sekarang seperti yang Anda lihat, saya mencoba memuat gambar background.jpg ke dalam PIXI dengan fungsi loader.add() . Itu tidak berhasil. Dalam log konsol debug saya, saya dapat melihat bahwa tinggi dan lebar gambar adalah 1. Selain itu, ketika saya melihat URL untuk gambar latar belakang, semuanya tampak baik-baik saja. Ada tips?

🤔 Question

Komentar yang paling membantu

ini sudah usang sekarang ... dan kami membutuhkan cara untuk memuat aset apa pun yang kami bundel dengan webpack

Semua 6 komentar

Coba alihkan ke ini;
~.load (() => this.init ());~

@ staff0rd that works great! Tapi kenapa??

load mengharapkan fungsi sebagai parameternya, namun sebenarnya Anda memanggil init() sehingga meneruskan hasilnya (void) ke load . Jika init tidak memiliki referensi ke this di dalamnya, Anda dapat menggunakan berikut ini untuk melewatkan fungsi;
~.load (this.init);~

Perhatikan kurangnya tanda kurung.

ini sudah usang sekarang ... dan kami membutuhkan cara untuk memuat aset apa pun yang kami bundel dengan webpack

@hayesmaker berfungsi tetapi teksturnya kosong untuk sementara waktu. jika sudah siap, itu akan dibunyikan dengan benar.

@ nitwhiz itu sebabnya saya awalnya mendapatkan lebar 1px untuk semua sprite?
apakah ada cara untuk mengaktifkan callback setelah sprite dimuat?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat