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?
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?
Komentar yang paling membantu
ini sudah usang sekarang ... dan kami membutuhkan cara untuk memuat aset apa pun yang kami bundel dengan webpack