Pixi.js: Webpack๊ณผ ํ•จ๊ป˜ PIXI.js ์šฉ ์ด๋ฏธ์ง€ ์ž์‚ฐ๋กœ๋“œ

์— ๋งŒ๋“  2016๋…„ 12์›” 02์ผ  ยท  6์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pixijs/pixi.js

Webpack์„ ์‚ฌ์šฉํ•˜๋Š” React ํ”„๋กœ์ ํŠธ์—์„œ PIXI.js์˜ ์ด๋ฏธ์ง€ ์ž์‚ฐ์„๋กœ๋“œํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ „์ฒด '๋ฉ”๋‰ด'๊ตฌ์„ฑ ์š”์†Œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

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;

์ด์ œ ๋ณด์‹œ๋‹ค์‹œํ”ผ loader.add() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ background.jpg ์ด๋ฏธ์ง€๋ฅผ PIXI์—๋กœ๋“œํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ๋””๋ฒ„๊ทธ ์ฝ˜์†” ๋กœ๊ทธ์—์„œ ์ด๋ฏธ์ง€์˜ ๋†’์ด์™€ ๋„ˆ๋น„๊ฐ€ 1์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์˜ URL์„ ๋ณด๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ํŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๐Ÿค” Question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์ง€๊ธˆ์€ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์›นํŒฉ๊ณผ ํ•จ๊ป˜ ๋ฌถ๋Š” ์ž์‚ฐ์„๋กœ๋“œ ํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  6 ๋Œ“๊ธ€

์ด๊ฒƒ์„ ์ด๊ฒƒ์œผ๋กœ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค;
~.load (() => this.init ());~

@ staff0rd ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๊ทผ๋ฐ .. ์™œ ??

load ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ init() ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฒฐ๊ณผ (void)๋ฅผ load ํ•ฉ๋‹ˆ๋‹ค. init ์— this ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€์—†๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
~.load (this.init);~

๊ด„ํ˜ธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ง€๊ธˆ์€ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค ... ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์›นํŒฉ๊ณผ ํ•จ๊ป˜ ๋ฌถ๋Š” ์ž์‚ฐ์„๋กœ๋“œ ํ•  ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@hayesmaker ์ž‘๋™ํ•˜์ง€๋งŒ ํ…์Šค์ฒ˜๊ฐ€ ์ž ์‹œ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๊ฐ€๋˜๋ฉด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ธ”๋ฆฌ ํŒ…๋ฉ๋‹ˆ๋‹ค.

@nitwhiz ๋Š” ์ฒ˜์Œ์— ๋ชจ๋“  ์Šคํ”„๋ผ์ดํŠธ์— ๋Œ€ํ•ด 1px ๋„ˆ๋น„๋ฅผ ์–ป๋Š” ์ด์œ ์ž…๋‹ˆ๊นŒ?
์Šคํ”„๋ผ์ดํŠธ๊ฐ€๋กœ๋“œ๋˜๋ฉด ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰