LoginSignup
1
0

More than 1 year has passed since last update.

PIXI Sprite(Class)をextendsしてカスタマイズする

Last updated at Posted at 2021-11-28

はじめに

new PIXI.Sprite() で作成したスプライトオブジェクトの型にはないプロパティを追加したかったが、そのまま追加すると「プロパティ'〇〇'は型 'Sprite'に存在しません」とTypescriptエラーが出るので、PIXI.Spriteをextendsしてカスタマイズしようと思います。

PIXI.Spriteをextendsする

PIXI.Spriteをextendsするには、

import * as PIXI from 'pixi.js'

export class ExtendedSprite extends PIXI.Sprite {
    constructor(texture: PIXI.Texture) {
        super(texture)
    }
}

と定義すればok。

PIXI.Spriteは引数にPIXI.Textureが必要なため、constructorでtextureを受け取り、super(texture)でextendsしたClass(PIXI.Sprite)を呼び出すだけです。
実際に使用する際は、new PIXI.Sprite()の代わりに、

import image from 'assets/image.png';

const texture = PIXI.Texture.from(image)
const sprite = new ExtendedSprite(texture)

と記述します。

extendsしたClassにプロパティを追加する

では、実際にこのextendsしたClassに新しくプロパティを追加してみます。例えば、Number型のcategoryIdを追加すると以下のようになります。

export class ExtendedSprite extends PIXI.Sprite {
    public categoryId?: number
    constructor(texture: PIXI.Texture) {
        super(texture)
    }
}

これで、

const texture = PIXI.Texture.from(image)
const sprite = new ExtendedSprite(texture)
sprite.categoryId = 1

とすることで、PIXI.Spriteを継承しつつもプロパティcategoryIdを持つClassを作成することが出来ました。
categoryIdごとにPIXI.Spriteを条件分岐して、Canvasに描画する際には便利だと思います。

1
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
1
0