3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pixi.jsでつくるスワイプスタイルのクイズアプリ[その1]

Last updated at Posted at 2019-07-08

Webブラウザ上でインタラクティブなコンテンツを出す仕組みとして近年HTML5がよくつかわれています。
WebGLで描画できるフレームワークを探していたところ、Pixi.Jsというものをみつけました。

今回、技術検証も含めてPixi.Jsで簡易的な○×をゲームを作ってみます。

まずは導入

npm install pixi.js

もちろんコンテンツネットワークからももってくることができます。

<script src = " https://cdnjs.cloudflare.com/ajax/libs/pixi.js/4.5.1/pixi.min.js"> </script >

とくに、CDNなら問題ないのですが、
Bundleをダウンロードしてインポートしたとき、どのjsを呼びだせばいいんじゃ?
と悩む人も多いと思います。

\node_modules\pixi.js\dist
というディレクトリの中に
pixi.jsとpixi.min.jsがありました。
最小限のコンテンツがpixi.min.jsでフルに使いたいならpixi.jsで良いかと
どちらにどの機能があるのか一覧を載せているDocumentが見当たりませんでした。

とりあえず、落ちていたコードを拾い集めてタイトル画面とボタンだけ作ってみました。
あとで整形出術が必要です。

ゲームシーンの作り方については、こちらを参考
シーンの作成
#scenesmanager-class


<body>
  <div id="pixiview"></div>
<script src="../pixi/pixi.min.js"></script>
<script>
 const app = new PIXI.Application({
    width: 800, height: 600, backgroundColor: 0x1099bb, resolution: window.devicePixelRatio || 1,});
  document.body.appendChild(app.view);
  const container = new PIXI.Container();
  app.stage.addChild(container);
  // Create a new texture
  const texture = PIXI.Texture.from('img/logo2.png');
    const logo2 = new PIXI.Sprite(texture);
    container.addChild(logo2);
  // Move container to the center
  container.x = app.screen.width / 4;
  container.y = app.screen.height / 12;

  //以下ボタン サンプルからそのまま なんでテクスチャアトラスで読み込まんの?
  //ついでに長いのであとでボタンクラスとか作る。
  var textureButton = PIXI.Texture.fromImage('img/start_button1.png');
  var textureButtonDown = PIXI.Texture.fromImage('img/start_button2.png');
  var textureButtonOver = PIXI.Texture.fromImage('img/start_button3.png');

      var button = new PIXI.Sprite(textureButton);
      button.buttonMode = true;

      button.x = app.screen.width / 3;
      button.y = app.screen.height / 1.4;

      // make the button interactive...
      button.interactive = true;
      button.buttonMode = true;

      button
   
        .on('pointerdown', onButtonDown)
        .on('pointerup', onButtonUp)
        .on('pointerupoutside', onButtonUp)
        .on('pointerover', onButtonOver)
        .on('pointerout', onButtonOut);


      app.stage.addChild(button);


      function onButtonDown() {
        this.isdown = true;
        this.texture = textureButtonDown;
        this.alpha = 1;
      }

      function onButtonUp() {
        this.isdown = false;
        if (this.isOver) {
          this.texture = textureButtonOver;
        }
        else {
          this.texture = textureButton;
        }
      }

      function onButtonOver() {
        this.isOver = true;
        if (this.isdown) {
          return;
        }
        this.texture = textureButtonOver;
      }

      function onButtonOut() {
        this.isOver = false;
        if (this.isdown) {
          return;
        }
        this.texture = textureButton;
      }

</script>

</body>

*はまりどころ
ローカルに置いてある画像はなぜかChromeでは表示されません。
Firefoxで表示することもできますが、不安定なようです。
Chrome ServerというChromeアプリを使うことで、
⇒Pixiの仕様上ローカルの画像はセキュリティ的ななにかにより、表示できません。

その2につづく

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?