Pixi.js 간단한 예제 (with Vue) - (1)
15 Apr 2022 | javascript html5Vue.js에서 Pixi.js를 사용하는 간단한 예제
Vue.js에서 Pixi.js를 사용하는 방법은 크게 다음과 같은 3가지 방식이 있습니다.
- HTML canvas 요소를 정의하고 그 위에 Pixi를 구동하는 방법
- HTML body 요소에 Pixi를 직접 삽입하는 방법
- HTML div 요소에 Pixi를 직접 삽입하는 방법
HTML canvas 위에서 Pixi 구동하는 방법
미리 canvas를 html로 정의하고 그 위에 Pixi를 구동하는 방법입니다.
<template>
  <div id="container">
    <canvas id="pixi-canvas"></canvas>
  </div>
</template>
<script>
import * as PIXI from "pixi.js";
import { onMounted } from "@vue/runtime-core";
export default {
  setup() {
    onMounted(() => {
      const app = createPixiApp();
      draw(app);
    });
    const createPixiApp = () => {
      var canvas = document.getElementById("pixi-canvas");
      console.log(`window size(${window.innerWidth}, ${window.innerHeight})`);
      console.log(`canvas size(${canvas.width}, ${canvas.height})`);
      const app = new PIXI.Application({
        width: window.innerWidth,
        height: window.innerHeight,
        antialias: true,
        backgroundAlpha: true,
        view: canvas,
      });
      return app;
    };
    const draw = (app) => {
      const graphics = new PIXI.Graphics();
      graphics.lineStyle(8, 0x008080);
      graphics.moveTo(0, 250);
      graphics.lineTo(800, 500);
      app.stage.addChild(graphics);
      const sprite = PIXI.Sprite.from(require("@/assets/sample.png"));
      app.stage.addChild(sprite);
      let elapsed = 0.0;
      app.ticker.add((delta) => {
        elapsed += delta;
        sprite.x = 100.0 + Math.cos(elapsed / 50.0) * 100.0;
      });
    };
    return {
      draw,
    };
  },
};
</script>
<style scoped>
#container {
  display: block;
  background: white;
  padding: 20px;
}
#pixi-canvas {
  width: 80vw;
  height: 80vh;
}
</style>
실행 화면

Pixi 내에서 Canvas 정의해서 HTML 문서의 Body에 추가하는 방법
<template>
  <div id="pixi-container"></div>
</template>
<script>
import * as PIXI from "pixi.js";
import { onMounted } from "@vue/runtime-core";
export default {
  setup() {
    onMounted(() => {
      const app = createPixiApp();
      document.body.appendChild(app.view);
      draw(app);
    });
    const createPixiApp = () => {
      const app = new PIXI.Application({
        width: 800,
        height: 600,
        backgroundColor: "0x000000",
      });
      return app;
    };
    const draw = (app) => {
      const graphics = new PIXI.Graphics();
      graphics.lineStyle(8, 0x008080);
      graphics.moveTo(0, 250);
      graphics.lineTo(800, 500);
      app.stage.addChild(graphics);
      const sprite = PIXI.Sprite.from(require("@/assets/sample.png"));
      app.stage.addChild(sprite);
      let elapsed = 0.0;
      app.ticker.add((delta) => {
        console.log(`delta: ${delta}`);
        elapsed += delta;
        sprite.x = 100.0 + Math.cos(elapsed / 50.0) * 100.0;
      });
    };
    return {
      draw,
    };
  },
};
</script>
Pixi 내에서 Canvas 정의해서 HTML 문서의 div 요소에 추가하는 방법
<template>
  <div id="pixi-container"></div>
</template>
<script>
import * as PIXI from "pixi.js";
import { onMounted } from "@vue/runtime-core";
export default {
  setup() {
    onMounted(() => {
      const app = createPixiApp();
      var container = document.getElementById("pixi-container");
      container.appendChild(app.view);
      draw(app);
    });
    const createPixiApp = () => {
      const app = new PIXI.Application({
        width: 800,
        height: 600,
        backgroundColor: "0x000000",
      });
      return app;
    };
    const draw = (app) => {
      const graphics = new PIXI.Graphics();
      graphics.lineStyle(8, 0x008080);
      graphics.moveTo(0, 250);
      graphics.lineTo(800, 500);
      app.stage.addChild(graphics);
      const sprite = PIXI.Sprite.from(require("@/assets/sample.png"));
      app.stage.addChild(sprite);
      let elapsed = 0.0;
      app.ticker.add((delta) => {
        console.log(`delta: ${delta}`);
        elapsed += delta;
        sprite.x = 100.0 + Math.cos(elapsed / 50.0) * 100.0;
      });
    };
    return {
      draw,
    };
  },
};
</script>
  